Questions tagged «objective-c»

仅在有关Objective-C功能或取决于语言代码的问题上使用此标记。标签[cocoa]和[cocoa-touch]应该用于询问Apple的框架或类。使用相关标签[ios],[macos],[apple-watch]和[tvos]来解决特定于这些平台的问题。


9
NSLocale currentLocale始终返回“ en_US”而不是用户当前的语言
我正在将iPhone应用程序国际化-我需要根据用户当前的语言环境对某些视图进行编程更改。我疯了,因为无论iPhone模拟器或实际硬件上的语言偏好是什么,locale总是评估为“ en_US”: NSString *locale = [[NSLocale currentLocale] localeIdentifier]; NSLog(@"current locale: %@", locale); 疯狂的是,该应用程序的其余部分表现正常。从Localization.strings文件中选择了正确的字符串并在界面中使用了该语言,并且使用了针对所选语言环境的正确的.xib文件。 我也尝试了以下方法,但均无济于事: NSString *locale = [[NSLocale autoupdatingCurrentLocale] localeIdentifier]; NSLog(@"current locale: %@", locale); 有什么简单的我想念的吗?偏好还是进口? 我曾经做过的事: 正如Darren的答案所暗示的那样,我要查找的首选项不在中NSLocale,而是在这里: NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults]; NSArray* languages = [userDefaults objectForKey:@"AppleLanguages"]; NSString* preferredLanguage = [languages objectAtIndex:0]; NSLog(@"preferredLanguage: %@", preferredLang); 彼得的答案似乎是一个更好的解决方案: NSArray* preferredLanguages = [NSLocale …

18
在UIView中的两个角
不久前,我发布了一个关于仅将视图的两个角变圆的问题,并得到了很好的答复,但是在实现它时遇到了问题。这是我的drawRect:方法: - (void)drawRect:(CGRect)rect { //[super drawRect:rect]; <------Should I uncomment this? int radius = 5; CGContextRef context = UIGraphicsGetCurrentContext(); CGContextBeginPath(context); CGContextAddArc(context, rect.origin.x + radius, rect.origin.y + rect.size.height - radius, radius, M_PI, M_PI / 2, 1); CGContextAddArc(context, rect.origin.x + rect.size.width - radius, rect.origin.y + rect.size.height - radius, radius, M_PI / 2, 0.0f, …

19
声明属性的点符号与消息符号
现在,我们对属性使用“点”符号。我见过各种回和的Forth约点符号主场迎战消息表示法的优点。为了保持答复不变,我不会在问题中以任何方式答复。 您对属性访问的点符号和消息符号有何看法? 请尝试将其重点放在Objective-C上-我将提出的一个偏见是Objective-C是Objective-C,因此您对Java或JavaScript之类的偏好无效。 有效的注释与技术问题(操作顺序,强制转换优先级,性能等),清晰度(结构与对象的性质,优点和缺点),简洁性等有关。 注意,我在严格的代码质量和可读性方面工作过,曾在大型项目中工作过,这些项目的代码约定和质量至关重要(一次编写读取一千次范例)。

6
可以复制UIView吗?
只需使用这种方式: UIView* view2 = [view1 copy]; // view1 existed 这将导致模拟器无法启动此应用。 尝试保留, UIView* view2 = [view1 retain]; // view1 existed // modify view2 frame etc 对的任何修改view2将适用于view1我理解与view2共享相同的记忆view1。 为什么不能UIView复制?是什么原因?
81 ios  objective-c  uiview  copy 

17
在SKScene中设置按钮
我发现UIButtons不能很好地配合SKScene,所以我试图继承类SKNode以创建一个按钮SpriteKit。 我希望它的工作方式是,如果我在其中初始化按钮SKScene并启用触摸事件,那么当按钮SKScene被按下时,它将在我的方法中调用一个方法。 我将不胜感激任何可以引导我找到该问题解决方案的建议。谢谢。

6
#define vs const in Objective-C
我是Objective-C的新手,并且关于const和预处理指令还有一些问题#define。 首先,我发现无法使用定义常量的类型#define。这是为什么? 其次,使用其中一个相对于另一个有什么优势吗? 最后,哪种方法更有效和/或更安全?

3
.h和.m文件中@interface定义之间的区别
通常我们使用 @interface interface_name : parent_class <delegates> { ...... } @end .h文件和.m文件中的方法,我们综合了.h文件中声明的变量的属性。 但是在某些代码中,此@interface ..... @ end方法也保留在.m文件中。这是什么意思?它们之间有什么区别? 还提供一些有关.m文件中定义的接口文件的getter和setter方法的信息... 提前致谢

16
解析URL字符串以获取键值的最佳方法?
我需要解析这样的URL字符串: &ad_eurl=http://www.youtube.com/video/4bL4FI1Gz6s&hl=it_IT&iv_logging_level=3&ad_flags=0&endscreen_module=http://s.ytimg.com/yt/swfbin/endscreen-vfl6o3XZn.swf&cid=241&cust_gender=1&avg_rating=4.82280613104 我需要将NSString拆分为诸如cid=241和的标志部分&avg_rating=4.82280613104。我一直在用,substringWithRange:但是值以随机顺序返回,所以搞砸了。是否有任何类可以轻松解析,因此您基本上可以将其转换为NSDictionary以便能够读取键的值(例如ValueForKey:cid应该返回241)。还是有比使用NSMakeRange子字符串更简单的解析方法?

9
NSDictionary,有序密钥
我有一个NSDictionary(存储在plist中),我基本上将其用作关联数组(字符串作为键和值)。我想在我的应用程序中使用键数组,但是我希望它们按特定的顺序排列(不是我可以编写算法将其排序的顺序)。我总是可以存储一个单独的键数组,但是这似乎有点麻烦,因为我总是必须更新字典的键以及数组的值,并确保它们始终对应。当前,我只使用[myDictionary allKeys],但是显然,这将以任意,无保证的顺序返回它们。我缺少Objective-C中的数据结构吗?有人对如何更优雅地做到这一点有任何建议吗?

6
使用xib创建可重用的UIView(并从情节提要中加载)
好的,关于此的StackOverflow上有很多帖子,但是在解决方案上没有一个特别明确的地方。我想UIView用随附的xib文件创建一个自定义。要求是: 没有单独的UIViewController–完全独立的课程 类中的插座,允许我设置/获取视图的属性 我目前执行此操作的方法是: 覆写 -(id)initWithFrame: -(id)initWithFrame:(CGRect)frame { self = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:self options:nil] objectAtIndex:0]; self.frame = frame; return self; } -(id)initWithFrame:在我的视图控制器中以编程方式实例化 MyCustomView *myCustomView = [[MyCustomView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)]; [self.view insertSubview:myCustomView atIndex:0]; 这可以正常工作(尽管从不调用[super init]并且仅使用已加载的笔尖的内容设置对象似乎有点可疑–在这种情况下,建议在此添加一个子视图也可以)。但是,我也希望能够从情节提要中实例化视图。所以我可以: 放置UIView在故事板父视图 将其自定义类设置为 MyCustomView 覆盖-(id)initWithCoder:-我最常看到的代码适合以下模式: -(id)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; if …


3
使用AVAssetReader绘制波形
我使用assetUrl从iPod库中读取歌曲(在代码中名为audioUrl),我可以用多种方式播放,剪切,可以对此进行一些处理,但是...我真的不明白该怎么办CMSampleBufferRef获取绘制波形的数据!我需要有关峰值的信息,如何以这种方式(也许是另一种方式)获得峰值? AVAssetTrack * songTrack = [audioUrl.tracks objectAtIndex:0]; AVAssetReaderTrackOutput * output = [[AVAssetReaderTrackOutput alloc] initWithTrack:songTrack outputSettings:nil]; [reader addOutput:output]; [output release]; NSMutableData * fullSongData = [[NSMutableData alloc] init]; [reader startReading]; while (reader.status == AVAssetReaderStatusReading){ AVAssetReaderTrackOutput * trackOutput = (AVAssetReaderTrackOutput *)[reader.outputs objectAtIndex:0]; CMSampleBufferRef sampleBufferRef = [trackOutput copyNextSampleBuffer]; if (sampleBufferRef){/* what I gonna do …


5
将iVars放在“现代” Objective-C中的何处?
雷·温德利奇(Ray Wenderlich)的《 iOS6 by Tutorials》一书中有一章很好地讲述了如何编写更多“现代” Objective-C代码。在其中的一小节中,这些书描述了如何将iVars从类的标题移到实现文件中。由于所有iVar都应该是私有的,因此这似乎是正确的选择。 但是到目前为止,我发现了三种方法。每个人的做法都不同。 1.)将iVars放在大括号内的@implementantion下(这是本书中的做法)。 2.)将iVars放在@implementantion下,没有大括号 3.)将iVars放在@implementantion(类扩展名)上方的专用接口内 所有这些解决方案似乎都可以正常工作,到目前为止,我还没有注意到我的应用程序行为上的任何差异。我猜没有做到这一点的“正确”方法,但是我需要编写一些教程,我只想为我的代码选择一种方法。 我应该走哪条路? 编辑:我只在这里谈论iVars。不是属性。对象仅需要自身的其他变量,并且不应暴露在外部。 代码样例 1) #import "Person.h" @implementation Person { int age; NSString *name; } - (id)init { self = [super init]; if (self) { age = 40; name = @"Holli"; } return self; } @end 2) #import "Person.h" @implementation …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.