๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿฅ– Bread Basics49

Dart ์–ธ์–ด ๊ธฐ๋ณธ๊ธฐ ๋ฐฐ์šฐ๊ธฐ https://www.inflearn.com/course/dart-%EC%96%B8%EC%96%B4-%EC%9E%85%EB%AC%B8 [์ง€๊ธˆ ๋ฌด๋ฃŒ][์ฝ”๋“œํŒฉํ† ๋ฆฌ] [์ž…๋ฌธ] Dart ์–ธ์–ด 4์‹œ๊ฐ„๋งŒ์— ์™„์ „์ •๋ณต ๊ฐ•์˜ | ์ฝ”๋“œํŒฉํ† ๋ฆฌ - ์ธํ”„๋Ÿฐ์ฝ”๋“œํŒฉํ† ๋ฆฌ | , ๊ฐœ๋ฐœ์— ๋Œ€ํ•ด ์•„๋ฌด ๊ฒƒ๋„ ๋ชฐ๋ผ๋„ ๊ดœ์ฐฎ์•„์š” ๐Ÿ’‍โ™€๏ธ๋‚ด ์†์œผ๋กœ ์•ฑ ๋งŒ๋“ค๊ธฐ ์ฒซ๊ฑธ์Œ! Dart ์–ธ์–ด, ์ œ๋Œ€๋กœ ๋ฐฐ์›Œ๋ณด์ž! ๐Ÿ˜Ž [์‚ฌ์ง„] iOS์™€ Android์—์„œ ์•ฑ์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” Flutter ํ”„๋ ˆ์ž„์›Œํฌwww.inflearn.com ์ธํ”„๋Ÿฐ์—์„œ flutter์˜ ๊ธฐ๋ณธ dart์–ธ์–ด ๊ฐ•์˜๋ฅผ ๋“ค์—ˆ๋‹ค. ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉด์„œ ์•Œ๊ฒŒ ๋œ ๋‚ด์šฉ ์œ„์ฃผ๋กœ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๋ณ€์ˆ˜ ? ์™€ ! (nullable, non-nullable) Final๊ณผ Const๊ณตํ†ต์ ์ฐจ์ด์ final:- ํ• ๋‹น.. 2025. 4. 28.
mixin, sealed, base ํด๋ž˜์Šค void main() {}// Mixin Class// 1) mixin์€ extended๋‚˜ with์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— mixin class๋„// ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค// 2) ํด๋ž˜์Šค๋Š” on ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— mixin class๋„ on ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.mixin class AnimalMixin { String bar() { return '๋ฉ๋ฉ'; }}class Dog with AnimalMixin{}// sealed ํด๋ž˜์Šค๋Š” abstract์ด๋ฉด์„œ final์ด๋‹ค// ๊ทธ๋ฆฌ๊ณ  ํŒจํ„ด๋งค์นญ์„ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹คsealed class Person3 {}class Idol extends Person3 {}class Engineer extends.. 2025. 4. 25.
Record(ํŠœํ”Œ), Destructuring void main() { final result = nameAndAge({'name': '๋ฏผ์ง€', 'age': 20}); print(result); print(result.$1); print(result.$2); print('---------------'); final result3 = getNewJeansWithType(); for (final item in result3) { print(item.$1); print(item.$2); } print(result3); print('---------------'); final result4 = getNewJeansWithType2(); for (final item in result4) { print(item.name);.. 2025. 4. 25.
Future, async, await, stream, listen, sink, yield void main() async { // Future - ๋ฏธ๋ž˜ // ๋ฏธ๋ž˜์— ๋ฐ›์•„์˜ฌ ๊ฐ’? Future name = Future.value('๋ธŒ๋ž˜๋“œ'); Future number = Future.value(1); Future isTrue = Future.value(true); final result1 = await addNumbers(1, 1); final result2 = await addNumbers(2, 2); print('result1: $result1'); print('result2: $result2'); print('result1 + result2 : ${result1 + result2}');}Future addNumbers(int number1, int number2) asyn.. 2025. 4. 25.
ํ˜•๋ณ€ํ™˜, map, where, reduce/fold, ์ฒด์ด๋‹ ์•„ ์žฌ๋ฐŒ๋‹ค. ์ฝ”๋”ฉ ์žฌ๋ฐŒ๋‹ค~void main() { List blackPink = ['๋กœ์ œ', '์ง€์ˆ˜','๋ฆฌ์‚ฌ', '์ œ๋‹ˆ', '์ œ๋‹ˆ']; print(blackPink); print(blackPink.asMap()); print(blackPink.toSet()); Map blackPinkMap = blackPink.asMap(); print(blackPinkMap.keys); print(blackPinkMap.keys.toList()); print(blackPinkMap.values); print(blackPinkMap.values.toList()); Set blackPinkSet = Set.from(blackPink); print(blackPinkSet.toList());.. 2025. 4. 25.
@ovveride void main() { TimesTwo tt = TimesTwo(2); print(tt.calculate()); TimesFour tf = TimesFour(2); print(tf.calculate());}class TimesTwo { final int number; TimesTwo( this.number, ); int calculate() { return number * 2; }}class TimesFour extends TimesTwo { TimesFour( int number, ): super(number); @override int calculate() { return super.calculate() * 2; }} 2025. 4. 24.
OOP์˜ ์ƒ์†!! https://www.inflearn.com/course/dart-%EC%96%B8%EC%96%B4-%EC%9E%85%EB%AC%B8 ๋จผ์ € ํ˜„์žฌ [์ฝ”๋“œํŒฉํ† ๋ฆฌ] [์ž…๋ฌธ] Dart ์–ธ์–ด 4์‹œ๊ฐ„๋งŒ์— ์™„์ „์ •๋ณต์„ ๋“ฃ๊ณ ์žˆ๋Š”๋ฐ ์ƒ์†์— ๋Œ€ํ•ด ์ฝ”๋“œ๋ฅผ ๊ณต๋ถ€ํ•œ๊ฒŒ ์žˆ๋Š”๋ฐ ์—†์• ๋ฉด ์•„์‰ฌ์šธ๊ฑฐ๊ฐ™์•„ ๋‚จ๊น€๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ๋งŒ ๋ณด๋ฉด ์ƒ์†์— ๋Œ€ํ•ด ํ™•์ธํ• ์ˆ˜์žˆ์–ด์š”! void main() { print('---------------Idol---------------------'); Idol apink = Idol(name: '์—์ดํ•‘ํฌ', membersCount: 5); apink.sayName(); apink.sayMembersCount(); BoyGroup bts = BoyGroup('BTS', 7); print('-------.. 2025. 4. 24.
[Flutter] Hot Reload๋ž€? Hot Reload๋ž€? vscode์—์„œ command + s ๋งŒ ํ–ˆ๋”๋‹ˆ ๋ฐ”๋กœ ์ ์šฉ์ด ๋˜๋Š”๊ฑธ Hot Reload!! ์˜ค ๋น ๋ฅธ๋ฐ~ ์š”๋žฌ๋‹ค๊ฐ€ ๋ฐ”๋กœ ์š”๋ž˜๋์Šด๋‹น~๊ทผ๋ฐ hot reload๊ฐ€ build ๋ฉ”์„œ๋“œ ํ•œ์ •์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋งŒ์•ฝ ํ•ซ๋ฆฌ๋กœ๋“œ๊ฐ€ ์•ˆ๋˜๋ฉด? ๊ทธ๊ฑฐ๋Š” ๋ณ€๊ฒฝํ•œ ๋‚ด์šฉ์ด build ๋ฉ”์„œ๋“œ ๋‚ด์— ์žˆ์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๋‹ค๊ณ  ์ด ๋ธ”๋กœ๊ทธ๊ฐ€ ๊ทธ๋Ÿฌ๋„ค์—ฌ http://velog.io/@yoojkim/Flutter-HotReload%EB%9E%80-1%EB%B6%84-%EC%95%88%EC%97%90-%EC%95%8C%EC%95%84%EA%B0%80%EB%8A%94-HotReload 2025. 4. 23.
Obj-C ๊ณต์‹ ๋ฌธ์„œ ์ •๋ฆฌ - ์Šค๋ ˆ๋”ฉ๊ณผ ๋™๊ธฐํ™” ์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ์—๋Š” Objective-C์—์„œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์Šค๋ ˆ๋“œ ๊ฐ„ ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•œ @synchronized ์ง€์‹œ์–ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.๐Ÿ“Œ ์Šค๋ ˆ๋”ฉ ์ง€์› ๊ฐœ์š”Objective-C๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‘ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ, ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์€ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ(Multithreading): ์—ฌ๋Ÿฌ ์‹คํ–‰ ํ๋ฆ„(์Šค๋ ˆ๋“œ)์ด ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Objective-C๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ ์ฝ”๋“œ ์„น์…˜์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณดํ˜ธํ•˜๋Š” @synchronized() ์ง€์‹œ์–ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.์ฐธ๊ณ ๋กœ ์Šค๋ ˆ๋“œ ๋™๊ธฐํ™”์™€ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”.. 2025. 4. 14.
Obj-C ๊ณต์‹ ๋ฌธ์„œ ์ •๋ฆฌ - ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ์—๋Š” Objective-C์˜ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ(Exception Handling)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.๐Ÿ“Œ Objective-C ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ฐœ์š”Objective-C ์–ธ์–ด๋Š” Java๋‚˜ C++๊ณผ ์œ ์‚ฌํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ตฌ๋ฌธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ตฌ๋ฌธ์„ NSException, NSError ๋˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ํด๋ž˜์Šค์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์— ๊ฐ•๋ ฅํ•œ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์˜ˆ์™ธ(Exception): ํ”„๋กœ๊ทธ๋žจ์˜ ์ •์ƒ์ ์ธ ์‹คํ–‰ ํ๋ฆ„์„ ์ค‘๋‹จ์‹œํ‚ค๋Š” ํŠน๋ณ„ํ•œ ์กฐ๊ฑด์œผ๋กœ, ๋‹ค์–‘ํ•œ ์˜ค๋ฅ˜ ์ƒํ™ฉ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.๐Ÿ“Œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ ํ™œ์„ฑํ™”ํ•˜๊ธฐObjective-C์—์„œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด GNU ์ปดํŒŒ์ผ๋Ÿฌ ์ปฌ๋ ‰์…˜(GCC) ๋ฒ„์ „ 3.3 ์ด์ƒ์—์„œ -fobjc-exceptions ์Šค์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.. 2025. 4. 14.