程序员教你如何用代码创建一个 女朋友
来源:互联网 发布:电脑背包 知乎 编辑:程序博客网 时间:2024/04/30 05:21
马上就要回家过年了,身为伟大的程序员,过年怎么能不带个妹子回家呢,没有妹子的怎么办?
没关系,我们new一个贝
NSMutableDictionary *me = [NSMutableDictionary dictionary]; // 从 GirlEntity类 创建一个妹子 GirlEntity *girl1 = [[[GirlEntity alloc] init] autorelease]; girl1.name = @"妹子1"; [me setObject:girl1 forKey:@"girlFriend"];
diaosi说从来没有过妹子,不知道妹子类是什么.
没关系,我们自己造
// 创建一个NSObject对象, 然后添加属性,把他设置成妹子 NSObject *girl2 = [[[NSObject alloc] init] autorelease]; objc_setAssociatedObject(girl2, "name", @"妹子2", OBJC_ASSOCIATION_COPY); [me setObject:girl2 forKey:@"girlFriend2"];
屌丝说这样还不够彻底.
没关系,我们自己new一个类出来
// 动态创建一个妹子类,然后创建一个妹子 const char *className = "Girl3"; Class kclass = objc_getClass(className); if (!kclass) { Class superClass = [NSObject class]; kclass = objc_allocateClassPair(superClass, className, 0); } NSUInteger size; NSUInteger alignment; NSGetSizeAndAlignment("*", &size, &alignment); class_addIvar(kclass, "name", size, alignment, "*"); // 注册到运行时环境 objc_registerClassPair(kclass); id girl3 = [[[kclass alloc] init] autorelease]; object_setInstanceVariable(girl3, "name", "妹子3"); [me setObject:girl3 forKey:@"girlFriend3"];
如果想带女神回去怎办?
没关系,我们可以挖墙角
// 挖墙角 GirlEntity *girl4 = [[[GirlEntity alloc] init] autorelease]; girl4.name = @"女神"; SEL original = @selector(talk); SEL replacement = @selector(talk2); Method a = class_getInstanceMethod([GirlEntity class], original); Method b = class_getInstanceMethod([self class], replacement); if (class_addMethod([GirlEntity class], original, method_getImplementation(b), method_getTypeEncoding(b))) { class_replaceMethod([GirlEntity class], replacement, method_getImplementation(a), method_getTypeEncoding(a)); } else { method_exchangeImplementations(a, b); } [girl4 talk];-(void) talk2{ NSString *name = [self valueForKey:@"name"]; if ([name isEqualToString:@"女神"]) { // do 你懂的 NSLog(@"%s", __FUNCTION__); }}
8 0
- 程序员教你如何用代码创建一个 女朋友
- Objective-C——教你如何用X-code创建一个OC程序
- 教你如何用github创建自己的简历
- 教你如何用Silverlight做一个仪表盘
- 教你如何用XML做网页,例子一个
- 教你如何用Android画一个几何图形
- 教你如何用Android画一个几何图形
- 教你如何用Android画一个几何图形
- 教你如何用Android画一个几何图形
- 教你如何用Android画一个几何图形
- 教你如何用Android画一个几何图形
- 教你如何用Android画一个几何图形
- 教你如何用Android画一个几何图形
- 如何用代码手工创建NSTableView
- 如何用代码手工创建NSTableView
- 如何用JAVA语句创建一个表
- 如何用汇编创建一个基础内核
- 如何用git创建一个项目
- 在pcDuino使用开源的语音识别Sphinx
- XMLTABLE
- [NS3]个人使用小结&初学者记录
- Flex 性能优化
- cocos2d-x-LuaProxy学习日志(9) -- 移植android(cocos2d-x 2.1.4)
- 程序员教你如何用代码创建一个 女朋友
- 让UIWebView弹出键盘上的按钮显示中文
- Fragmen详解
- 黑马程序员-----IO之序列流SequenceInputStream
- IntentService简介
- 晨曦中,凛冽的风,脑际空空,可记得痛
- 将博客搬至CSDN
- 聚类分析中几种算法的比较
- 2013年前端开发工具最强盘点