Swift4 Day94:Swift开发人员的Objective-C

2018.12.26适用于Swift开发人员的Objective-C

  • 建立String的方法
  NSString * productTitle = @“弹跳球”; NSString *制造商= @“ Acme Novelty”; 
  • int float double建立方法
  int数量= 144;浮动价格= 19.9;双单位价格=数量/价格; 
  • 数组的建立方法
  • 想要把double放到Array必须先将它转成NSObject
  • NSArray与NSDictionary是不能修改的,如果要修改要使用NSMutableDictionary
  • [bostionDict setValue:@“巴西”为键:@“国家”]];
    是将国家的值从美国改成巴西
  • [bostionDict addEntriesFromDictionary:@ {@“人口”:@(656000)}];
    加新的物件到bostionDict中
  • switch跟for的写法跟swift没什么区别但一定要加()
  • 新建NSObjcet档案命名为Animal后,会有h档跟m档。
  • .h为标头档,做为宣告属性和方法使用, .m为Objective-C档,做为实际编写属性值和方法内容使用。
  • 先定义Animal.h的属性
 枚举组{哺乳动物= 0,鸟,爬行动物,两栖动物,BonyFish,CarFish}; @ interface Animal:NSObject @ property(nonatomic,strong)NSString * name; @property(nonatomic)枚举组group; @property(nonatomic)BOOL isExtinct ; @属性(非原子)IBOutlet UIImageView * thumbnaiView; @end 
  • 建立一个为动物型别的物件称为liger
  • 只写动物* liger; 会报错,要记得分配

在Animal.m中加上功能

让我们来拆解一下:void代表没有回传值,eat是函数名,NSStringg是型别,food是参数

  -(void)eat:(NSString *)food {NSLog(@“ yum yum,请问我有几秒钟美味的%@”,food);} 

在Animal.h中加上介面

  -(void)进餐:(NSString *)食物; 

用[liger eat:@“ ceral”]; 在viewDidLoad呼叫功能

再加一个功能到Animal.m

Canine.m中加上initWithName函数然后Canine.h加接口

如果没有加interface错误讯息如下:

‘Canine’的可见@interface没有声明选择器’initWithName:’

-(id)是指回传的东西,因为一开始不会检查型别,所以要小心使用

写一个bark的功能MSLog woof woof


-(void)bark {NSLog(@“ woof woof”); }

-(无效)树皮;

再建立一个继承Canine的Chihuahua类别,会拥有Canine的所有能力像initWithName,也可以重复写bark的内容。

 奇瓦瓦州 
-(void)bark {NSLog(@“ Yip Yip”); }
奇瓦瓦州
-(无效)树皮;

converseWithDog的功能,犬是参数的型别,doggie则是参数的名字。

我觉得很像Swift中扩展名的用法,先选择Objective-C文件在选择类别,类选择NSString

在NSString + Translator.m中,编写转换函数,再去NSString + Translator.h中设置接口

  -(NSString *)kennethize:(NSString *)短语{NSMutableString * translatedPhrase = [NSMutableString stringWithString:phrase]; [translatedPhrase replaceOccurrencesOfString:@“。  withString:@“ :)”选项:0范围:NSMakeRange(0,[translatedPhrase length])];返回(NSString *)translatedPhrase;} 

github中还有练习uppercaseString的范例

像上面一样选择Objective-C文件在选择协议中,加上run track两个介面,ferretOut则为可选的介面。

这跟Swift蛮像的,但要注意是Swift要用optional时要加@objc

如何在Swift协议中定义可选方法?

感谢您为Stack Overflow提供答案! 您过去的一些答案尚未得到很好的接受,您正在…

stackoverflow.com

  @协议狩猎-(void)run ;-( void)track; @ optional-(void)ferretOut; @end 

在Canine.h中

确认协议1.#import“ Hunt.h” 2.Animal

在Canine.m档案中就会叫你实做协议

也可以去Chihuahua.m中实作optional的协议ferretOut

字符串和数值变量

wl02722691 /练习字符串和数字变量

集合类型数组和字典

wl02722691 /练习收集类型数组和字典

面向对象和类/类继续分配初始化内存以及更多/功能和方法/创建子类/协议

wl02722691 /练习对象定向和类

分类目录

wl02722691 /练习类别

  • Swift开发人员的Treehouse Objective-C
  • Objective-C基础
  • 面向对象的Objective-C
  • NS历史
  • Ivars和属性
  • 内存和指针简介
  • 实践中的指针
  • 如何在Objective-C中声明一个块?
  • 使用块