iphone – Objective-C中流畅的界面模式

iphone – Objective-C中流畅的界面模式,第1张

概述我是 Objective-c中的新手,我想在我的OC类中实现流畅的界面模式.这是我的项目的更新和简化案例: // .h file@interface MyLogger : NSObject { ... }- (MyLogger*) indent:(BOOL)indent;- (MyLogger*) debug:(NSString*)message, ...;- (id) warnin 我是 Objective-c中的新手,我想在我的OC类中实现流畅的界面模式.这是我的项目的更新和简化案例:

// .h file@interface MyLogger : NSObject {  ... }- (MyLogger*) indent:(BOol)indent;- (MyLogger*) deBUG:(Nsstring*)message,...;- (ID) warning:(Nsstring*)message,...;....@end// .m file@implement MyLogger {- (MyLogger*) indent:(BOol)indent {   // some codes to set indent or unindent   return self; // I think it should return [self autorelease];}- (MyLogger*) deBUG:(Nsstring*)message,... {    // build message and log the message    return [self autorelease];}- (ID) warning:(Nsstring*)message,... {  // similar as above,but log a warning message  return self;}//. usage in another .m  -(ID) initAnotherClass {    if (self = [supper init]) {      // ...      // instance was defined as MyLogger in .h as class var      instance = [[[MyLogger alloc] initWithContext:@"AnotherClassname"] retain];     //...     }   return self;  }  -(voID)method1 {   [[instance deBUG:@"method1"] indent:YES];   ...   [instance warning:@"some deBUG message with obj: %@",var];   ...   [[instance indent:NO] deBUG:@"method1 DONE"]; } // in my Xcode output I'll see deBUG output like [date time] [app ID] [DEBUG] AnotherClassname - method1 [date time] [app ID] [WARNING]   AnotherClassname - some deBUG message with obj: ... [date time] [app ID] [DEBUG] AnotherClassname - method1 DONE

在缩进中,我返回自己,而在调试中:我返回[self autorelease].它工作正常,如果我只返回自己喜欢在调试.但是,我认为我应该总是以与调试中相同的方式返回:在OC内存管理方面.有什么建议么?

更新:我添加了另一种方法警告与返回类型的ID.我应该将自己作为ID类型还是我的类在OC中返回?它似乎都工作正常,没有编译错误或警告.我似乎Cocoa框架类返回ID.例如,Nsstring.h中有一些方法

+ (ID)string;+ (ID)stringWithString:(Nsstring *)string;

似乎可可有一些FI模式像方法. ID类型应该比类本身好吗?

更新:作为Pat Wallace的建议,我实际上在iPhone项目中使用这种模式.

解决方法 这里有几个注释:

>当您从方法返回现有对象时,如果仍然“关心”该对象,则不会自动释放它,您只需返回它.在这种情况下,由于即使在调用者获得引用之后,您仍然“保持”自己的对象,所以不要发送自动释放消息.不要将模式视为“返回自动释放的对象”;只有当您在方法中创建对象时,才能执行此 *** 作,并希望在不保留引用的情况下返回它.如果调用者想要保留引用,它可以自由保留.> self是一种特殊的引用,很少发送自己的任何内存管理消息,可能在init方法之外.>尽管你可以创建一个流畅的消息链接模式,就像你想要做的那样,只是一个注释,这不是常见的/惯用的Objective-C,你的代码可能与其他代码混合不好,可能会混淆其他人阅读.只是FYI.

总结

以上是内存溢出为你收集整理的iphone – Objective-C中流畅的界面模式全部内容,希望文章能够帮你解决iphone – Objective-C中流畅的界面模式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1019266.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存