рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдЪреМрдВрдХрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА

рдпрд╣ рд▓реЗрдЦ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ?


рджреЛ рддрдереНрдпред рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХрдИ рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реИрдВред рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдХреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдмрдврд╝ рд░рд╣реА рд╣реИред рдирд┐рд╖реНрдХрд░реНрд╖: рдПрдХ рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реАрдЦрдиреЗ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛ рдХреЗ рдореМрдЬреВрджрд╛ рдЬреНрдЮрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ рд╕реА рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд┐рдпрд╛, рдкрд┐рдЫрд▓реЗ 15 рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦрдирд╛, рдХрднреА-рдХрднреА рд╕реА ++, рдкрд╛рдпрдерди, рдкрд░реНрд▓ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛, рд╕реНрдХрд╛рд▓рд╛ рдХреЛ рджрд┐рд▓рдЪрд╕реНрдкреА рд╕реЗ рджреЗрдЦрдирд╛ред рдФрд░ рдЕрдм рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реАред

рдкреНрд░рддреНрдпреЗрдХ рдпрд╛рддреНрд░рд╛ рд╕реЗ, рдЖрдорддреМрд░ рдкрд░ "рд╣рдо" рдФрд░ "рдЙрдиреНрд╣реЗрдВ" рдХреЗ рдмреАрдЪ рд╕рдмрд╕реЗ рдордиреЛрд░рдВрдЬрдХ рдорддрднреЗрджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдИ рдХрд╣рд╛рдирд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВред рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХрд╛ рдирд╛рдЯрдХ рдХрд┐рдП рдмрд┐рдирд╛, рдореИрдВ рдЖрдкрдХреЛ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛, рдЬрд┐рд╕рдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдЬрд╛рд╡рд╛ рд╕реЗ рдПрдХ рдПрд▓рд┐рдпрди рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд░ рджрд┐рдпрд╛ред рдмрд╛рдж рдореЗрдВ, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЗрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕рдордЭрдиреЗ рдпрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ-рд╕реА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рд╡рд╛ рдХреЛрдб рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╕рд┐рд░реНрдл рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдЕрдзрд┐рдХ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реИред рднрд╛рд╖рд╛ рдХреЗрд╡рд▓ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдореБрд╣рд╛рд╡рд░реЗ рд╣реИред рдореИрдВ рдлрд┐рд░ рд╕реЗ рдЬреЛрд░ рджреЗрддрд╛ рд╣реВрдВ - рдпрд╣ рдПрдХ рдЧрд╛рдЗрдб рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░реНрдпрдЯрдХ рдиреЛрдЯ рд╣реИрдВред рдпрджрд┐ рд╡реЗ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдмрд╛рдж рдХреЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ред

рднреЗрдЬреЗрдВ, рдХреЙрд▓ рдирд╣реАрдВ, рд╕рдВрджреЗрд╢, рд╡рд┐рдзрд┐рдпрд╛рдБ рдирд╣реАрдВ


Java:
object.method(param);

Objective-C:
[object method:param];


Java , Objective-C тАФ . . -, , ( , , , Java ), (selector), -. , , .

, Java , (warning). тАФ . тАФ .

?


Java:
public Feature addFeature (String name, String value, boolean isOptional);

Objective-C:
-(Feature*) addFeature :(NSString*)name withValue:(NSString*)value asOptional:(BOOL) optional:


Objective-C тАЬтАЭ . , , addFeature:withValue:asOptional:

SEL selector = @selector(addFeature:withValue:asOptional:);

, , , 16 . 16 .

: ,



Java

Objective-C:
@interface NSString (LetsAugment)
-(BOOL) isGoodActor;
@end


, NSObject. (category). LetsAugment, isGoodActor NSString. NO (false Java), , YES (true) , . тАФ :

if ([@тАЭSteven SeagalтАЭ isGoodActor]) NSLog (@тАЭYeah!тАЭ) else NSLog (@тАЭWhat's wrong with you?тАЭ);

, , .

, -, . , , . . -, .

:


Java:
MyTao tao = null;
int howManyHands = tao.clap();

Objective-C:
MyTao* tao = nil;
int howManyHands = [tao clap];


, , NullPointerException , , . тАФ howManyHands 0. 1, , .

. nil (null Java), (nil, 0, NO ..). , .
Java: ()

class Profile {
int getVersion() {
...
}

class Feature {
Profile getProfile(String name) {
...
}

class Phone {
Feature getFeature(String name) {
...
}

class PhoneFactory {
static Phone designAndProduce(String model) {
...
}
}

...
int version = 0;
Phone phone = PhoneFactory.designAndProduce(тАЬiphone5тАЭ);
Feature btFeature = phone.getFeature(тАЬbtтАЭ);
if (btFeature != null) {
Profile profile = btFeature.getProfile(тАЬa2dpтАЭ);
if (profile != null) {
version = profile.getVersion();
}
}



Objective-C:

@interface Profile : NSObject
@property (readonly) int version;
@end

@interface Feature : NSObject
- (Profile*) getProfile:(NSString*)name;
@end

@interface Phone : NSObject
+ (Phone*) designAndProduce:(NSString*)name;
-(Feature*) getFeature:(NSString*)name;
@end
...

Phone* phone = [Phone designAndProduce:@"iphone5"];
Feature* btFeature = [phone getFeature:@"bt"];
Profile* profile = [btFeature getProfile:@"a2dp"];
int version = profile.version;



Objective-C Java . [phone getFeature:@┬лbt┬╗] nil, version 0.

┬л ┬╗? nil , , , . (getter/setter). , Objective-C (- profile.version?) тАФ (property), .


Source: https://habr.com/ru/post/In138441/


All Articles