Questions tagged «objective-c»

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




4
什么是objc_setAssociatedObject()?在什么情况下应使用它?
在我进行的一个项目中,原始作者选择使用它objc_setAssociatedObject(),但我并不确定100%做什么,或者为什么他们决定使用它。 我决定进行查找,但是不幸的是,文档对其用途的描述不是很明确。 objc_setAssociatedObject 使用给定的键和关联策略为给定的对象设置关联值。 void objc_setAssociatedObject(id object, void *key, id value, objc_AssociationPolicy policy) 参数 object 关联的源对象。 key 关联的密钥。 value 与对象的键相关联的值。传递nil以清除现有的关联。 policy 协会的政策。有关可能的值,请参见“关联对象行为”。 那么,该功能的作用到底是什么?在什么情况下应使用它? 阅读答案后进行编辑 那么下面的代码有什么意义呢? Device *device = [self.list objectAtIndex:[indexPath row]]; DeviceViewController *next = [[DeviceViewController alloc] initWithController:self.controller device:device item:self.rootVC.selectedItem]; objc_setAssociatedObject(device, &kDeviceControllerKey, next, OBJC_ASSOCIATION_RETAIN); 如果设备已经是实例变量,将其与视图控制器相关联又有什么意义呢?

7
为什么UIScrollView在ios 6和ios 7中从顶部留出空间
我已关闭自动版式,并且viewcontroller嵌入在导航控制器中。我正在使用Xcode 5,情节提要。 我不明白为什么会在顶部留下空间。实际上,在情节提要中,我已将标签恰好放在导航栏下方。但是,当我在模拟器上运行它时,它从顶部开始留有空间。 解决此问题的一种骇人听闻的方式 -(void)viewWillLayoutSubviews { self.scrollViewMain.frame = CGRectMake(0, -70, 320, 800); self.scrollViewMain.contentSize = CGSizeMake(320, 800); } 但是我是否错过了一种非常简单的方法。

15
UIView的“界面”构建器中的边框颜色不起作用?
我试图通过IB设置视图的图层属性。一切正常,除了边框的颜色(属性layer.borderColor): 我记得一年前遇到此问题,但最终还是以编程方式完成了此工作。而且,我可以通过编程方式执行此操作,但是我很好奇为什么该layer.borderColor属性永远无法通过界面生成器工作。我不想import QuartzCore,然后仅仅因为这个原因而编写额外的代码行,这似乎有点过头了。

16
如何确定WKWebView的内容大小?
我正在尝试在iOS 8及更高版本下运行时,用WKWebView实例替换动态分配的UIWebView实例,但找不到确定WKWebView内容大小的方法。 我的Web视图嵌入在较大的UIScrollView容器中,因此,我需要确定Web视图的理想大小。这将允许我修改其框架以显示其所有HTML内容,而无需在Web视图内滚动,而且我将能够为滚动视图容器设置正确的高度(通过设置scrollview.contentSize)。 我尝试过sizeToFit和sizeThatFits没有成功。这是我的代码,该代码创建WKWebView实例并将其添加到容器scrollview中: // self.view is a UIScrollView sized to something like 320.0 x 400.0. CGRect wvFrame = CGRectMake(0, 0, self.view.frame.size.width, 100.0); self.mWebView = [[[WKWebView alloc] initWithFrame:wvFrame] autorelease]; self.mWebView.navigationDelegate = self; self.mWebView.scrollView.bounces = NO; self.mWebView.scrollView.scrollEnabled = NO; NSString *s = ... // Load s from a Core Data field. …




7
导致无法识别的选择器的Objective-C类别
我的项目有一个UIImage我要从另一个类调用的类别函数。我正确地导入了图像类别的头文件,并且我得到了要编译的项目而没有任何警告。 问题是,当我调用UIImagecategory函数时,看到带有的无法识别的选择器错误NSInvalidArgumentException。如果正确链接了所有内容,为什么会看到此消息? #import <UIKit/UIKit.h> @interface UIImage (DRShare) + (UIImage*) imageNamed:(NSString*)name; @end @implementation UIImage (DRShare) + (UIImage*) imageNamedDR:(NSString*)name{ CGFloat s = 1.0f; if([[UIScreen mainScreen] respondsToSelector:@selector(scale)]){ s = [[UIScreen mainScreen] scale]; } NSString *path = [NSString stringWithFormat:@"%@%@%@.png",kImagesPath,name,s > 1 ? @"@2x":@""]; return [UIImage imageWithContentsOfFile:DRBUNDLE(path)]; } @end 调用它的文件: backgroundView = [[UIImageView alloc] initWithImage:[UIImage …


11
如何将NSString截断为设置的长度?
我进行了搜索,但是令人惊讶地找不到答案。 我NSString要缩短长度。我希望最大长度为20个字符左右。我读过某处最好的解决方案是使用substringWithRange。这是截断字符串的最佳方法吗? NSRange stringRange = {0,20}; NSString *myString = @"This is a string, it's a very long string, it's a very long string indeed"; NSString *shortString = [myString substringWithRange:stringRange]; 看起来有些微妙(如果字符串短于最大长度,则会崩溃)。我也不确定它是否是Unicode安全的。有更好的方法吗?有人对此有很好的分类吗?



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.