// // main.m // 匿名对象 #import <Foundation/Foundation.h> #import "Person.h" #import "Iphone.h" int main(int argc, const char * argv[]) { // 匿名就是没有名字, 匿名对象就是没有名字的对象 // 1.有名字的对象 // 只要用一个指针保存了某个对象的地址, 我们就可以称这个指针为某个对象 // 称p为Person对象 Person *p =[Person new]; // 0ffc12 p->_age = 30; p->_name= @"lnj"; [p say]; /* 0ffc12->_age = 30; 0ffc12->_name= @"lnj"; [0ffc12 say]; */ // 2.没有名字的对象 // 无论有没有名字, 只要调用new方法都会返回对象的地址 // 每次new都会新开辟一块存储空间 [Person new]->_age = 30; [Person new]->_name = @"LMJ"; [[Person new] say];//name=(null),age=0 // 3.匿名对象的应用场景 // 3.1当对象只需要使用一次的时候就可以使用匿名对象 Iphone *phone = [Iphone new]; // 0ffb11 phone = 0ffb11 [phone brand]; // [0ffb11 brand]; [[Iphone new] brand]; // [0fff5 brand]; // 3.2匿名对象可以作为方法的参数(实参) Person *p1 = [Person new]; // Iphone *phone1 = [Iphone new]; // [p1 signal:phone1]; [p1 signal:[Iphone new]]; return 0; }
// // Person.h // day12 #import <Foundation/Foundation.h> #import "Iphone.h" @interface Person : NSObject { @public int _age; // 年龄 NSString *_name; // 姓名 } - (void)say; - (void)signal:(Iphone *)phone; @end
// // Person.m // day12 #import "Person.h" // .h和.m之间切换 command + control + ⬆️ @implementation Person -(void)say { NSLog(@"name = %@, age = %i", _name, _age); } - (void)signal:(Iphone *)phone { [phone callWithNumber:12345678]; } @end
// // Iphone.h // day12 #import <Foundation/Foundation.h> @interface Iphone : NSObject - (void)brand; - (void)callWithNumber:(int)number; @end
// // Iphone.m // day12 #import "Iphone.h" @implementation Iphone - (void)brand { NSLog(@"苹果手机"); } - (void)callWithNumber:(int)number { NSLog(@"打电话给%i", number); } @end