Questions tagged «objective-c»

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


1
这里的“实例消息的接收者类型'CALayer'是转发声明”是什么意思?
我正在将代码块从iOS4项目移植到iOS5,但是ARC遇到了一些麻烦。该代码从屏幕截图生成PDF。 PDF生成代码 UIView *captureView; ... NSMutableData *pdfData = [NSMutableData data]; UIGraphicsBeginPDFContextToData(pdfData, captureView.bounds, nil); UIGraphicsBeginPDFPage(); CGContextRef pdfContext = UIGraphicsGetCurrentContext(); [captureView.layer renderInContext:pdfContext]; UIGraphicsEndPDFContext(); renderInContext行 [captureView.layer renderInContext:pdfContext]; 产生以下错误。 Automatic Reference Counting issue Receiver type 'CALayer' for instance message is a forward declaration 有什么想法吗?


6
ObjectiveC从字符串解析整数
我试图从数组中提取一个字符串(包含一个整数),然后将其用作函数中的int。我正在尝试使用intValue将其转换为int。 这是我一直在尝试的代码。 NSArray *_returnedArguments = [serverOutput componentsSeparatedByString:@":"]; [_appDelegate loggedIn:usernameField.text:passwordField.text:(int)[[_returnedArguments objectAtIndex:2] intValue]]; 我收到此错误: 传递'loggedIn :::'的参数3使指针从整数转换而无需强制转换 怎么了?

17
UILabel不会自动缩小文本以适合标签大小
我有一个奇怪的问题,我要处理超过8个小时。.根据情况,我必须UILabels动态计算大小, 例如,我UIViewController收到一个事件并更改UILabels大小。从大到小。我的大小UILabel变小,我得到正确的所需大小,但是我的文本UILabel保持不变,字体大小不变,依此类推。我需要使字体变小,以使整个文本适合UILabel。所以问题是如何使文本适合我的标签autoshrinking? 在my中xib,UILabels autoshrink选中,行数也设置为0,并且我的字符串也有新的行符号(\ n),并且我将linebreakmode选择为wordwrap。也许有人处于与我现在相同的状况,并且可以帮助我吗?我真的很感激。 提前致谢! 编辑: UILabel最小字体大小设置为10

6
深度复制NSArray
是否有任何内置功能可以让我深入复制NSMutableArray? 我环顾四周,有人说[aMutableArray copyWithZone:nil]作品很深。但是我尝试过,这似乎是一个浅表。 现在,我正在手动for循环复制: //deep copy a 9*9 mutable array to a passed-in reference array -deepMuCopy : (NSMutableArray*) array toNewArray : (NSMutableArray*) arrayNew { [arrayNew removeAllObjects];//ensure it's clean for (int y = 0; y<9; y++) { [arrayNew addObject:[NSMutableArray new]]; for (int x = 0; x<9; x++) { [[arrayNew objectAtIndex:y] addObject:[NSMutableArray …

9
有没有办法抑制Xcode中的警告?
有没有办法抑制Xcode中的警告? 例如,我正在调用一个未公开的方法,由于该方法不在头文件中,因此我会收到编译警告。我知道我可以将其添加到标题中以停止警告,但是我想知道是否有其他方法可以将其添加到标题中(这样我就可以使标题保持清洁和标准)来抑制警告?杂物之类的?

1
Xcode 9中的“此函数声明不是原型”警告
使用Xcode 9时,有一些编译器警告说This function declaration is not a prototype。建议添加void到方法主体,这将解决该问题。我遇到的问题是,对于系统API的UIApplication委托(例如委托方法)也会引发这些警告: - (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo withResponseInfo:(NSDictionary *)responseInfo completionHandler:(void (^)())completionHandler 这可以通过以下方法解决: - (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo withResponseInfo:(NSDictionary *)responseInfo completionHandler:(void (^)(void))completionHandler 现在,我想知道委托方法是否仍然可以长期使用,或者Apple将void在更高的iOS 11 Beta版本中插入。我很好奇,因为如果包含void主体,Xcode会抱怨方法选择器不匹配(这很有意义)。到目前为止,有人遇到过同样的问题吗?

6
UIButton自定义字体垂直对齐
我有一个UIButton使用自定义字体的字体,该字体是在加载视图时设置的: - (void)viewDidLoad { [super viewDidLoad]; self.searchButton.titleLabel.font = [UIFont fontWithName: @"FONTNAME" size: 15.0 ]; } 我遇到的问题是字体似乎浮在中心线上。如果我注释掉这行,默认字体将显示为垂直居中。但是更改为自定义字体会破坏垂直对齐方式。 我在使用自定义字体的表单元格上也遇到了同样的问题。 我是否需要告诉视图自定义字体不如其他字体高? 编辑:我刚刚意识到,我使用的字体是Windows TrueType字体。我可以在Mac上的TextEdit中很好地使用它,这只是我的App中对齐问题

3
在哪种情况下,我们需要在ARC下编写__autoreleasing所有权限定符?
我正在努力完成难题。 __strong是所有Objective-C可保留对象指针(如NSObject,NSString等)的默认值。这是一个强大的参考。ARC -release在范围的末尾与a 保持平衡。 __unsafe_unretained等于旧方法。它用于弱指针而不保留可保留对象。 __weak__unsafe_unretained与之类似,只是它是一个自动归零的弱引用,这意味着一旦释放引用的对象,指针将设置为nil。这消除了悬挂指针和EXC_BAD_ACCESS错误的危险。 但是究竟有什么__autoreleasing好处呢?我很难找到有关何时需要使用此限定符的实际示例。我相信这仅适用于期望指针指向的函数和方法,例如: - (BOOL)save:(NSError**); 要么 NSError *error = nil; [database save:&error]; 在ARC下必须这样声明: - (BOOL)save:(NSError* __autoreleasing *); 但这太模糊了,我想完全理解为什么。我发现的代码片段将__autoreleasing放在两颗星之间,这对我来说很奇怪。类型是NSError**(指向NSError的指针),那么为什么要放置__autoreleasing在星星之间而不是简单地放置在它们之间NSError**? 另外,可能还有其他情况我必须依靠__autoreleasing。

12
Xcode MyProjectName-Bridging-Header.h不存在
我想在我的Objective-C项目中开始使用Swift。所以我增加了一个快速班: import Foundation @objc class System : NSObject { @objc func printSome() { println("Print line System"); } } 并将其导入到.m文件中: #import "MyProjectName-Swift.h" 在构建我的项目时,出现以下错误: Bridging header 'PathToMyProject/MyProjectName-Bridging-Header.h' does not exist 注意:在“构建设置-> Swift编译器-代码生成-> Objective-C桥接标题”下设置为MyProjectName-Bridging-Header.h 我应该怎么做才能解决这个问题? 任何帮助深表感谢。 编辑:桥接头文件:#if defined(__ has_include)&& __has_include()#include #endif #include <objc/NSObject.h> #include <stdint.h> #include <stddef.h> #include <stdbool.h> #if defined(__has_include) && __has_include(<uchar.h>) …
118 ios  objective-c  xcode  swift 

14
如何将单个故事板uiviewcontroller用于多个子类
假设我有一个情节提要,其中包含UINavigationController作为初始视图控制器。其根视图控制器是子类UITableViewController,这是BasicViewController。它具有IBAction连接到导航栏的右侧导航按钮的功能。 从那里开始,我想将情节提要用作其他视图的模板,而不必创建其他情节提要。说这些视图将具有完全相同的接口,但是具有类的根视图控制器,SpecificViewController1并且SpecificViewController2是的子类BasicViewController。 除IBAction方法外,这两个视图控制器将具有相同的功能和接口。 就像下面这样: @interface BasicViewController : UITableViewController @interface SpecificViewController1 : BasicViewController @interface SpecificViewController2 : BasicViewController 我可以那样做吗? 可我只是实例化的故事板BasicViewController,但有根视图控制器子类SpecificViewController1和SpecificViewController2? 谢谢。


5
iOS启动后台线程
我的iOS设备中有一个小sqlitedb。当用户按下按钮时,我从sqlite获取数据并将其显示给用户。 我要在后台线程中执行此操作(不阻塞UI主线程)。我这样做- [self performSelectorInBackground:@selector(getResultSetFromDB:) withObject:docids]; 经过提取和一些处理后,我需要更新UI。但是由于(作为一种好习惯),我们不应该从后台线程执行UI更新。我selector这样在主线程上调用- [self performSelectorOnMainThread:@selector(showResults) withObject:nil waitUntilDone:NO]; 但是我的应用程序在第一步中崩溃了。即启动后台线程。这不是在iOS中启动后台线程的方法吗? 更新1:在[self performSelectorInBackground....获得此stacktrace之后,再也没有任何信息- 更新2:我什至尝试启动这样的后台线程- [NSThread detachNewThreadSelector:@selector(getResultSetFromDB:) toTarget:self withObject:docids];但仍然得到相同的stacktrace。 就像我澄清的那样,当我在主线程上执行此操作时,一切运行顺利... 更新3这是我试图从后台运行的方法 - (void)getResultSetFromDB:(NSMutableArray *)toProceessDocids { SpotMain *mirror = [[SpotMain alloc] init]; NSMutableArray *filteredDocids = toProceessDocids; if(![gMediaBucket isEqualToString:@""]) filteredDocids = [mirror FetchDocIdsForMediaBucketWithDocID:filteredDocids mBucket:gMediaBucket numRes:-1]; if(![gMediaType isEqualToString:@""]) filteredDocids = [mirror FetchDocIdsForMediaType:filteredDocids mediaType:gMediaType numRes:-1]; …

24
UIAlertController自定义字体,大小,颜色
我正在使用新的UIAlertController来显示警报。我有以下代码: // nil titles break alert interface on iOS 8.0, so we'll be using empty strings UIAlertController *alert = [UIAlertController alertControllerWithTitle: title == nil ? @"": title message: message preferredStyle: UIAlertControllerStyleAlert]; UIAlertAction *defaultAction = [UIAlertAction actionWithTitle: cancelButtonTitle style: UIAlertActionStyleCancel handler: nil]; [alert addAction: defaultAction]; UIViewController *rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController; [rootViewController …

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.