草庐IT

self-center

全部标签

iphone - 弱 self 是否必要(performSelector)

我有一个NSObject类别,可以在一段时间后执行block。在这种情况下我需要削弱自己吗?__weakViewController*weakSelf=self;[selfrunBlockAfterDelay:0.6block:^{weakSelf.someview=...}];//Category-(void)runBlockAfterDelay:(NSTimeInterval)delayblock:(void(^)(void))block{dispatch_async(dispatch_get_main_queue(),^{[selfperformSelector:@selecto

objective-c - self = [super init] 重访

我偶然发现了这篇文章InObjective-CwhyshouldIcheckifself=[superinit]isnotnil?我能看懂thissyntax:-(id)initWithString:(NSString*)aString{self=[superinit];if(self){instanceString=[aStringretain];}returnself;}或thissyntax:-(id)init;{if(!(self=[superinit]))returnnil;//otherstuffreturnself;}但我还是不明白“标准”模板语法-init{if((se

iphone - 在 block 内引用 self

现在我有一部分代码是这样的:__strongMyRequest*this=self;MyHTTPRequestOperation*operation=[[MyHTTPRequestOperationalloc]initWithRequest:urlRequest];[operationsetCompletionBlockWithSuccess:^(AFHTTPRequestOperation*request,idresponseObject){[thisrequestFinished:request];}failure:^(AFHTTPRequestOperation*request,

objective-c - 需要在 UIViewController 中转换 self.view 吗?

我创建了一个UIViewController,其中包含一个带有我构建的自定义类的View。我已将View连接到File'sOwnerView导出。它呈现正确,我没有任何真正的问题。但是,我想从我的ViewController实例调用我的View中的一个方法,假设它称为drawSomething。所以在我的Controller的一个方法中,我使用:[self.viewdrawSomething];它有效。但是我收到预编译器警告,因为它似乎不知道我的自定义View定义中的方法。我的方法在这里错了吗?我可以创建一个局部变量并将其强制转换以使警告明显消失。我已经导入了View的头文件,所以这不

ios - 为什么 UIAlertController 会用 self 创建一个保留周期?

UIAlertController*alert=[UIAlertControlleralertControllerWithTitle:@"alert"message:nilpreferredStyle:UIAlertControllerStyleAlert];UIAlertAction*action=[UIAlertActionactionWithTitle:@"action"style:UIAlertActionStyleDefaulthandler:^(UIAlertAction*_Nonnullaction){[selfdoSomething];}];[alertaddActio

ios - 如何覆盖 self.navigationItem.backBarButtonItem Action ?

我想覆盖self.navigationItem.backBarButtonItem的target和action,我试过:UIBarButtonItem*backButton=[[UIBarButtonItemalloc]initWithTitle:@"Back"style:UIBarButtonItemStyleBorderedtarget:selfaction:@selector(backButtonOverrideAction:)];[self.navigationItemsetLeftBarButtonItem:backButton];它正在工作,但我想使用默认箭头:我也试过:U

ios - UIView KVO : Why don't changes to "center" cause KVO notifications for "frame"?

我正在努力加深对这些机制的理解。我有一个启用触摸的UIView,可以更新它自己的center属性。我的理解是frame属性是center和bounds的合成函数。假设这是真的,我将一个观察者放在我的可触摸/可移动View上,观察它的frame属性。但是该观察者永远不会收到有关框架更改的通知(当center更改时会自动发生)。如果我直接观察center,它会按预期工作。为什么观察frame在这里不起作用?请注意,我知道我可以直接观察center,这很好。我还可以使用frame的will/did方法围绕中心变化,这样也可以工作:[selfwillChangeValueForKey:@"fr

ios - Game Center 回合制比赛中玩家之间的聊天

我正在尝试使用GameCenter创建回合制游戏。我想知道是否可以让比赛中的球员互相聊天(语音或文字)。我稍微研究了一下,似乎可以通过普通游戏而不是回合制游戏实现。如果不可能允许此类聊天的解决方案或方法是什么? 最佳答案 是的,您可以通过以下方式进行文字聊天:在不结束回合的情况下,更新GKTurnBasedMatch上的matchData对象。更新后的NSData将提供给所有打开您的应用程序并参与游戏的玩家。因此,您的matchData对象必须同时携带游戏状态和聊天状态。不幸的是,我看不出如何触发用户通知或为新聊天标记应用程序而不必

ios - UIImageView 自动从 self.view 中移除自身

tutorialImage=[[UIImageViewalloc]initWithImage:[UIImageimageNamed:@"TaptoStart.png"]];tutorialImage.frame=CGRectMake(0,0,1024,768);[tutorialImageaddGestureRecognizer:[[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(blankMethod)]];tutorialImage.userInteractionEnabled=YES;//iuseth

ios - 了解保留计数以及在其中访问 self 的 block 。

我对block的弱引用有基本的了解。我面临的问题是,每当我在block内访问self时,self的保留计数就会增加2,而当我在默认block内访问self时(例如UIViewAnimation)self保留计数增加1。只是想了解为什么它会增加2。提前致谢! 最佳答案 根据Clang源代码生成Objective-C代码块。CGBlocks.cppCGDecl.cppCGObjC.cppObjective-Cblock文字由EmitBlockLiteral函数生成。llvm::Value*CodeGenFunction::EmitBlo