我有一个客观的C类。 其中,我创build了一个init方法,并在其中build立了一个NSNotification //Set up NSNotification [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getData) name:@"Answer Submitted" object:nil]; 我在哪里可以在这个类中设置[[NSNotificationCenter defaultCenter] removeObserver:self] ? 我知道,对于一个UIViewController ,我可以将其添加到viewDidUnload方法那么如果我只是创build一个目标c类需要做什么?
我在我的Xcode 4项目中使用CocoaPods,我有三个目标(我的项目是默认的,一个用于构build精简版,一个用于构build演示版本)。 所有的目标使用相同的库,但CocoaPods只是添加静态库和searchpath的主要目标。 我的podfile看起来像这样: platform :ios, '5.0' pod 'TestFlightSDK', '>= 1.1' pod 'MBProgressHUD', '0.5' pod 'iRate', '>= 1.6.2' pod 'TimesSquare', '1.0.1' pod 'AFNetworking', '1.1.0' pod 'KKPasscodeLock', '0.1.5' pod 'iCarousel', '1.7.4' 我得到这个工作的唯一方法是单独指定每个目标,再次列出所有的豆荚。 platform :ios, '5.0' target :default do pod 'TestFlightSDK', '>= 1.1' pod 'MBProgressHUD', '0.5' pod 'iRate', '>= 1.6.2' pod 'TimesSquare', '1.0.1' pod 'AFNetworking', '1.1.0' pod […]
我已经打开了一直是iPhone / iPad的项目。 我现在不能build立它,因为我的唯一的“计划”选项是“MyApp我的Mac 64位”。 我怎样才能得到这个设置回iphone / ipad模拟器和设备? 我的“目标设备系列”设置是iPhone / iPad。
我已经使用了一些rake(一个Ruby make程序),并且有一个选项来获得所有可用的目标列表,例如 > rake –tasks rake db:charset # retrieve the charset for your data… rake db:collation # retrieve the collation for your da… rake db:create # Creates the databases defined in y… rake db:drop # Drops the database for your curren… … 但在GNU make中似乎没有这样做的select。 显然,代码几乎就在这里,截至2007年 – http://www.mail-archive.com/help-make@gnu.org/msg06434.html 。 无论如何,我做了一些小技巧来从makefile中提取目标,你可以在makefile中包含目标。 list: @grep '^[^#[:space:]].*:' Makefile 它会给你一个定义的目标列表。 这只是一个开始 […]
我通常会以另一种方式看待这个问题,比如每个伊娃都必须是一个财产? (我喜欢bbum对这个问题的回答)。 我几乎完全在我的代码中使用属性。 然而,我经常和一个在iOS上开发很长时间的承包商合作,他是一个传统的游戏程序员。 他写的代码几乎没有声明任何属性,并依赖于ivars。 我认为他是这样做的,因为1)他已经习惯了,因为属性并不总是存在,直到目标C 2.0(2007年10月)和2)为最小的性能增益不经过一个getter / setter。 虽然他写的代码不会泄漏,但是我仍然希望他使用超过ivars的属性。 我们谈到了这一点,他或多或less看不到使用属性的理由,因为我们没有使用KVO,而且他在处理记忆问题方面经验丰富。 我的问题是更多…为什么你会想要使用一个伊娃期 – 有经验与否。 真的有这么大的performance差异,使用伊娃是有道理的吗? 同样作为澄清的一点,我根据需要重写setter和getter,并使用与getter / setter内部属性相关的ivar。 但是,在getter / setter或init之外,我总是使用self.myProperty语法。 编辑1 我感谢所有的好回应。 我想解决的一个问题似乎是不正确的,那就是用一个ivar你可以封装你没有的财产。 只需在类继续中定义属性即可。 这将隐藏来自外部的财产。 您也可以在接口中声明属性readonly,并在实现中将其重新定义为readwrite: // readonly for outsiders @property (nonatomic, copy, readonly) NSString * name; 并在课堂上继续: // readwrite within this file @property (nonatomic, copy) NSString * name; 完全“私人”只能在课堂上继续申报。
我已经把一个项目分成了两个版本,并给他们每个人一个plist文件。 一切工作正常,但我不断收到此build设警告: 警告:“复制包资源”构build阶段包含此目标的Info.plist文件“MyApp-Info.plist” 当我尝试构buildMyApp时,我会得到这个。 为第二个目标构build同样的错误(在警告中使用SecondTarget-Info.plist )。 我不知道为什么这是一个警告,因为我想构build包含.plist文件。 每个.plist文件都有一个目标成员资格(用于他们自己的构build)。 这个警告是什么意思? 有没有办法让它消失?
试图在构build服务器上构build我的项目给我以下错误: Microsoft (R) Build Engine Version 4.0.30319.1 error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\TeamData\Microsoft.Data.Schema.SqlTasks.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is […]
有没有办法在Markdown中创build一个在新窗口中打开的链接? 如果没有,你推荐什么语法来做到这一点。 我将它添加到我使用的markdown编译器。 我认为这应该是一个select。
我在运行时在代码中添加了UIView 。 我想绘制一个UIBezierPath ,但是这意味着我不得不重写drawRect for UIView? 或者是有另一种方式来绘制到自定义的UIView ? 这里是生成UIView的代码: UIView* shapeView = [[UIView alloc]initWithFrame:CGRectMake(xOrigin,yOrigin+(i*MENU_BLOCK_FRAME_HEIGHT), self.shapeScroll.frame.size.width, MENU_BLOCK_FRAME_HEIGHT)]; shapeView.clipsToBounds = YES; 这里是创build和返回一个UIBezierPath的函数: – (UIBezierPath*)createPath { UIBezierPath* path = [[UIBezierPath alloc]init]; [path moveToPoint:CGPointMake(100.0, 50.0)]; [path addLineToPoint:CGPointMake(200.0,50.0)]; [path addLineToPoint:CGPointMake(200.0, 200.0)]; [path addLineToPoint:CGPointMake(100.0, 200.0)]; [path closePath]; return path; }
我已经看到这个操作符在“学习Mac上的Objective C”中的示例代码中popup了好几遍。 我相信这是Objective Cinheritance的C语言的运算符。 我试着谷歌search堆栈溢出奇怪的没有出现。 有英文名吗?