02A. κ°μ²΄μ λ©μμ§
02A. κ°μ²΄μ λ©μμ§ κ΄λ ¨
λ©μμ§ ννμ
λͺ¨λ ν΄λμ€μμ κ°μ²΄λ id
λΌλ νΉλ³ν ννλ‘ νν λ©λλ€. λ°λΌμ¬ λ€μμ²λΌ κ°μ²΄λ₯Ό μ§ν₯νλ λ³μ obj
λ₯Ό μ μΈν©λλ€.
id obj;
μ΄λ€ κ°μ²΄ obj
μ λ©μμ§ msg
λ₯Ό 보λ΄λ €λ©΄ λ€μμ²λΌ μ°κ³ λ©μμ§ ννμ(message expression)μ΄λΌκ³ λΆλ¦
λλ€.
λ©μμ§ ννμμ 리μλ² κ°μ²΄κ° κ·Έ λ©μμ§λ₯Ό μ²λ¦¬ν κ²°κ΄κ°μ λλ €μ€λλ€. μ¦, λ©μμ§ ννμμ C ν¨μ νΈμΆμ²λΌ λ€λ£¨λ©΄ λ©λλ€. λ©μμ§ ννμμ λ€λ₯Έ ννμμ ꡬμ
© μμλ‘ μ¬μ©ν΄λ λλ©° void
νμ λλ €μ£Όλ λ©μμ§ ννμλ μμ΅λλ€.
λ©μμ§λ₯Ό λ°λ μͺ½, μ¦ μμμ λ³Έ obj
μ΄λΌκ³ μ ν λΆλΆμλ κ°μ²΄λ₯Ό λνλ΄λ ννμλ μμ±ν μ μμ΅λλ€. λ°λΌμ μ΄λ€ λ©μμ§ ννμμ κ²°κ³Όκ° κ°μ²΄λΌλ©΄ λ€μμ²λΌ μ΄μ΄μ λ©μμ§λ₯Ό 보λ΄λ λ©λλ€.
[[ obj msg1 ] msg2 ];
[[[ obj msg1 ] msg2 ] msg3 ];
.Cμμ []
λ λ°°μ΄ μμλ₯Ό μ°Έμ‘°νλ μ°μ°μμ΄μ§λ§ Objective-Cμμλ λ©μμ§ ννμμ μλ―Έν©λλ€. μΌμͺ½μ λ°°μ΄λͺ
μ΄λ ν¬μΈν° κ°μ λ€λ₯Έ ννμμ΄ μμ λλ§ []
κ° λ°°μ΄ μ°μ°μμ
λλ€. λ©μμ§ ννμμ κ°μ κ·Έλλ‘ λ°°μ΄ μΈλ±μ€λ‘ μΈ λλ λ€μμ²λΌ μλλ€.
element = table[[ obj count ]];
λ©μΈμ§λ λ³μλͺ μ²λΌ μλ³μμ κ°μ κ·μΉμΌλ‘ λ§λ€μ΄μ§ λ©μμ§ ν€μλλ‘ κ΅¬μ±λ©λλ€. ν¨μ νΈμΆκ³Ό λ§μ°¬κ°μ§λ‘ λ©μμ§λ μΈμκ° λ°λΌμ€κΈ°λ ν©λλ€. μΈμκ° μλ λ©μμ§λ νλμ λ©μμ§ ν€μλλ‘λ§ μ΄λ£¨μ΄μ§λλ€. λͺ κ°μ§ μλ₯Ό λ€μ΄λ΄ μλ€.
[aString copy];
width = [node width];
[[doc filename] retain];
λ λ²μ§Έ μμ²λΌ λ³μλͺ κ³Ό λ©μμ§ ν€μλλͺ μ΄ κ°μλ λ©λλ€. λ©μμ§ ννμ μμμ 무μμ΄ λ©μμ§ ν€μλμΈμ§ ꡬλ³ν μ μκΈ° λλ¬Έμ λλ€.
λ©μμ§μ μΈμκ° μμΌλ©΄ λ©μμ§ ν€μλ λμ μ½λ‘ (;
)μ λΆμ¬ μΈμκ° μμμ λνλ
λλ€. μ½λ‘ λ€μλ μ€μΈμκ° μ΅λλ€. μ€μΈμλ ν¨μ νΈμΆκ³Ό λ§μ°¬κ°μ§λ‘ μΌλ° ννμμ μ μ΅λλ€. λ€λ₯Έ λ©μμ§ ννμμ μ€μΈμλ‘ μ¨λ λ©λλ€.
[printInfo setLeftMargin: 60.0];
[[[cw window] firstResponder] copy: sender];
[doc isSameDirectory: [info objectAtIndex: ++num]];
μΈμλ₯Ό λ κ° μ΄μ μ¬μ©νλ €λ©΄ μ½λ‘ μ λΆμ΄κ³ λ€λ₯Έ ν€μλλ₯Ό μΆκ°ν©λλ€. λλ ν€μλ μμ΄ μ½λ°λ§ μΆκ°ν΄λ λ¬Έλ²μ μΌλ‘λ λ¬Έμ κ° μμ΅λλ€. νμ§λ§ μ½λ‘ μμ΄ ν€μλλ§ μΆκ°ν μλ μμ΅λλ€.
cell = [albumview cellAtRow: i column: j];
[maanger fileExistsAtPath:dirname isDirectory:&isdir];
[view lineTo: 1.4142 : (y + 1.0)];
λ©μμ§ μ λ ν°
ν¨μλ₯Ό ν¨μλͺ μΌλ‘ νΈμΆνλ κ²μ²λΌ κ°κ°μ λ©μμ§λ ν€μλλ₯Ό λμ΄ν κ²μ λ§μΉ μ΄λ¦μ²λΌ μ¨μ λ€λ₯Έ λ©μμ§μ ꡬλ³ν©λλ€. μ΄κ²μ λ©μμ§ μ λ ν°(message selector) λλ μ λ ν°(selector)λΌκ³ λΆλ₯΄λ©΄ λ©μλλͺ μ΄λΌκ³ λ ν©λλ€.
μμ λ³Έ λ©μμ§ ννμ μμμ λͺλͺ λ©μμ§λ λ€μκ³Ό κ°μ μ
λ ν°λ₯Ό κ°μ§λλ€. μΈμκ° μλ ν€μλλ μ½λ‘ λ μ
λ ν°μ ν¬ν¨λλ―λ‘ μ£Όμν΄μΌ ν©λλ€. μμ μ copy
μ copy:
λ μλ‘ λ€λ₯Έ μ
λ ν°μ
λλ€.
copy
retain
firstResponder
copy:
objectAtIndex:
cellAtRow:column:
fileExistsAtPath:isDirectory:
lineTo::
λ©μμ§ ν€μλλ λ³μμ λͺ λͺ κ·μΉμ λ°λΌ μ΄λ¦μ μ§μΌλ©°, μλ¬Έμλ‘ μμνλ κ²μ΄ κ΄λ‘μ λλ€. μ¬λ¬ λ¨μ΄λ‘ λ μ λ ν°λ 첫 μμ΄λ₯Ό μ μΈν λ¨μ΄ 첫 κΈμλ§λ€ λλ¬Έμλ‘ νκΈ°ν©λλ€.
λμ΄μ°κΈ°λ₯Ό νμ§ μμλ λ¬Έμμ΄μ μλ―Έλ₯Ό μ½κ² μ μ μμ΅λλ€.[1] Objective-Cλ μ€λͺ°ν‘μ νΉμ§μ΄ μ¬λ¬ λΆλΆμμ 보μ΄λλ° μ΄λ κ² λ©μμ§λ₯Ό λ©μμ§ ν€μλλ‘ νννλ λ°©λ²λ μ€λͺ°ν‘μμ κ°μ Έμμ΅λλ€.
λ©μμ§μ μΈμκ° μμΌλ©΄ λ©μμ§ μ μ²΄κ° μμ΄ λ¬Έμ₯μ²λΌ μ½νλλ‘ λ©μμ§ ν€μλλ₯Ό μ΄λ κ²μ΄ κ΄λ‘μ
λλ€. λν μΈμκ° μ¬λ¬ κ°λΌλ©΄ λ©μμ§ ν€μλλ κ°κ°μ μΈμκ° λ¬΄μμ λ»νλμ§λ₯Ό λνλ
λλ€. μλ₯Ό λ€μ΄ cellAtRow: column:
μ΄λΌλ μ
λ ν°λ κ°λ‘ μΈλ‘λ‘ λμ¬μ§ μ
(GUI λΆν μ€ νλ)μμ νκ³Ό μ΄μ μ§μ ν νλμ μ
μ μ°Έμ‘°ν λ μ°λλ°, λ μΈμ μ€ λ¬΄μμ΄ νμ΄κ³ μ΄μΈμ§ μ΄λ¦μΌλ‘ λ°λ‘ μ μ μμ΅λλ€. μμ΄ λ¬Έμ₯μΌλ‘ λ΄λ '~νμμ ~μ΄μ μλ μ
'λ‘ μ½νλλ€
μΈμλ§λ€ λ©μμ§ ν€μλλ₯Ό λμμν€λ©΄ νλ‘κ·Έλ¨μ΄ κΈΈμ΄μ§μ§λ§ μ½λμ κ°λ μ±μ μ’μμ§λλ€. "μΈλ²μ§Έ μΈμκ° λ¬΄μ¨ μν μ΄μμ§?"λΌλ©΄μ λ©λ΄μΌμ λ€μ κ±°λ¦¬μ§ μμλ λμ΄ νΈλ¦¬ν©λλ€. λμ μ νλ‘κ·Έλ¨μ μμ€ν λ μ λ ν°λ₯Ό νλ¦¬μ§ μκ² μ μ΄μΌλ§ ν©λλ€. λ°λΌμ ν΄λμ€ λνΌλ°μ€ λ±μμ μ λ ν°λ₯Ό 볡μ¬ν΄μ λΆμ¬ λ£λ κ²μ΄ μ’μ΅λλ€. Mac OS Xμμ μ 곡νλ ν΅ν© κ°λ°νκ²½μΈ Xcode[2]μλ λ©μλλͺ μλ μμ± κΈ°λ₯μ΄ μμ΅λλ€.
μ¬λ¬ κ°μ λ©μμ§ ν€μλλ‘ κ΅¬μ±λ μ
λ ν°λ μμλ₯Ό λ°κΎΈλ©΄ μ λ©λλ€. μλ₯Ό λ€μ΄ dragFile:fromRect:slideBack:event:
λΌλ μ
λ ν°κ° μ΄κ±Έ dragFile:event:slideBack:fromRect:
μ²λΌ μΈ μλ μμ΅λλ€. λ μ
λ ν°λ μ ν λ€λ₯Έ μ
λ ν° μ
λλ€.
μΈμ€ν΄μ€ μμ±κ³Ό μ΄κΈ°ν
id
ν λ³μλ₯Ό μ μΈνλ κ²λ§μΌλ‘λ λ³μμ κ°μ²΄κ° μ μ₯λμ§ μμ΅λλ€. κ°μ²΄μ μΌμ μν€λ €λ©΄ μ°μ ν΄λμ€μμ μΈμ€ν΄μ€λ₯Ό μμ±ν΄μΌ ν©λλ€.
.Objective-Cλ ν΄λμ€μ λ©μμ§λ₯Ό 보λ΄μ μΈμ€ν΄μ€λ₯Ό μμ±ν©λλ€. ν΄λμ€μ λ©μμ§λ₯Ό 보λ΄λ μ²λ¦¬λ '4.5μ 'μμ μμΈν μ€λͺ
νλ―λ‘ μ¬κΈ°μμλ ν΄λμ€λͺ
μ λ©μμ§ alloc
μ 보λ΄λ©΄ μΈμ€ν΄μ€κ° μλ‘ νλ λ§λ€μ΄μ§λ€λ κ²λ§ κΈ°μ΅ν΄ λ‘μλ€.
// μΈμ€ν΄μ€ μμ±
[ ν΄λμ€λͺ
alloc]
μ΄λ κ² λ§λ μΈμ€ν΄μ€λ λ©λͺ¨λ¦¬μ νμν μμμ΄ ν보λμλ€λ κ²μΌ λΏμ΄λ―λ‘ λ³΄ν΅μ μ΄ λ€μμ λ°λ‘ μ΄κΈ°νν΄μΌ ν©λλ€. μ΄κΈ°ν λ©μλλ μ΄κΈ°μ*(initializer)λΌκ³ λΆλ¦ λλ€. μ΄κΈ°μ μν μ νλ λ©μλλ‘ λ¬΄μμ΄ μ΄γ μμ§λ ν΄λμ€λ§λ€ λ€λ₯΄λ©°, ν΄λμ€μ λ°λΌμ μ¬λ¬κ°μ§ μ΄κΈ°μλ₯Ό μ 곡νκΈ°λ ν©λλ€.
Cocoaλ μ΄κΈ°μκ° init
μ΄κ±°λ λ©μλλͺ
μ΄ init
μΌλ‘ μμλΌμΌ ν©λλ€. λ€μμ ν΄λμ€μμ μΈμ€ν΄μ€λ₯Ό λ§λλ κΈ°λ³Έ λ©μμ§ ννμμ
λλ€.
// Cocoaμμ μ¬μ©νλ μΈμ€ν΄μ€ μμ±
[[ ν΄λμ€λͺ
alloc ] init ]
μΈμ€ν΄μ€λ₯Ό μμ±ν λ λ μ΄λ κ² alloc
λ©μμ§ ννμ λ€μμ λ°λ‘ μ΄κΈ°μκ° μ€λλ‘ μ λ μ΅κ΄μ κΈ°λ¦
μλ€.
μ΄κΈ°νκ° μΈμ€ν΄μ€ μ 보λ₯Ό '리μ (reset)'νμ§λ μμ΅λλ€. μ΄κΈ°μμμ νλ μ΄κΈ°νλ μΈμ€ν΄μ€κ° μμ±λ μ§ν ν λ²λ§ μ΄λ£¨μ΄μ§λλ€. μΈμ€ν΄μ€ λ³μ«κ°μ μ΄κΉκ°μΌλ‘ λ리λ λ±μ 리μ μ ν΄λΉλλ μ²λ¦¬κ° νμνλ©΄ μ΄λ¦¬μκ° μλ λ€λ₯Έ λ©μλλ₯Ό μ¬μ©ν΄μΌ ν©λλ€.
λν alloc
μ΄μΈμλ κ°μ²΄λ₯Ό μμ±νλ ν΄λμ€ λ©μλκ° μμΌλ©° ν΄λμ€μμ μ΄κΈ°νλ₯Ό λλΈ λ€μ μΈμ€ν΄μ€λ₯Ό λλ €μ£ΌκΈ°λ ν©λλ€.