Questions tagged «objective-c»

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

4
视图框架在viewWillAppear:和viewDidAppear之间变化:
我在应用程序中发现了一个奇怪的行为,其中一个连接IBOutlet在其视图控制器中对viewWillAppear:和的调用之间具有其连接的视图框架viewDidAppear:。这是我的UIViewController子类中的相关代码: -(void)viewWillAppear:(BOOL)animated { NSLog(@"%@", self.scrollView); } -(void)viewDidAppear:(BOOL)animated { NSLog(@"%@", self.scrollView); } 以及结果日志输出: MyApp[61880:c07] <UIScrollView: 0x1057eff0; frame = (0 0; 0 0); clipsToBounds = YES; autoresize = TM+BM; gestureRecognizers = <NSArray: 0x10580100>; layer = <CALayer: 0x1057f210>; contentOffset: {0, 0}> MyApp[61880:c07] <UIScrollView: 0x1057eff0; frame = (0 44; 320 416); clipsToBounds = YES; …

10
在UIView上设置Alpha会在其子视图上设置Alpha,这不应发生
根据文档 UIVIew @property(nonatomic) CGFloat alpha 此属性的值是介于0.0到1.0之间的浮点数,其中0.0表示完全透明,而1.0表示完全不透明。 此值仅影响当前视图,并且不影响其任何嵌入式子视图。 我有一个配置如下的容器视图: self.myView.backgroundColor = [UIColor blackColor]; self.myView.alpha = 0.5; [self addSubview:self.myView]; 然后将子视图添加到“ myView” [myView addSubView anotherView]; anotherView.alpha = 1; NSLog(@"anotherView alpha = %f",anotherView.alpha); // prints 1.0000 as expected 但是' anotherView '的确在屏幕上有Alpha(它并非如预期的那样不透明) 怎么可能?该怎么办?

6
在文件范围内可变地修改数组
我想创建一个恒定的静态数组,以便在我的Objective-C实现文件中使用,类似于在“ .m”文件的顶层进行如下操作: static const int NUM_TYPES = 4; static int types[NUM_TYPES] = { 1, 2, 3, 4 }; 我计划NUM_TYPES稍后在文件中使用它,因此我想将其放入变量中。 但是,当我这样做时,我得到了错误 “文件范围内的可变修改的'类型'” 我认为这可能与数组大小是变量有关(当我在其中放置整数文字时,我没有得到此消息static int types[4])。 我想解决这个问题,但也许我会做错所有事情……我在这里有2个目标: 具有整个文件可访问的数组 封装NUM_TYPES到变量中,这样我就不会在文件的不同位置散布相同的文字 有什么建议么? [编辑]在C常见问题解答中发现了此问题:http : //c-faq.com/ansi/constasconst.html

17
在CocoaPods中找不到规格
我不明白为什么Cocoapod在运行时找不到我创建的吊舱规格pod install。有人可以帮我解决这个麻烦吗? 我在库podspec文件中定义一个子规范,如下所示: s.subspec 'mysubspec' do |c| c.dependency 'ABC','1.0.0' end 库Podfile中列出了此依赖项ABC: pod 'ABC', :git => 'git@github.com:myrepo/Podspecs.git', :branch => 'xyz' ABC.podspecmyrepo / Podspecs的分支xyz中的Podspec文件看起来像这样: Pod::Spec.new do |s| s.name = "ABC" s.version = "1.0.0" s.source = { :git => "git@github.com:myrepo/Podspecs.git", :branch => "xyz" } end 错误是 [!] Unable to find a specification for …

3
NSURLResponse-如何获取状态码?
我有一个简单的NSURLRequest: [NSURLConnection sendAsynchronousRequest:myRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { // do stuff with response if status is 200 }]; 如何获取状态码以确保请求正常?
85 ios  objective-c 

4
如何异步同步CoreData和REST Web服务并同时正确地将所有REST错误传播到UI中
嘿,我正在这里为我们的应用程序设计模型层。 一些要求是这样的: 它应该可以在iPhone OS 3.0+上运行。 我们的数据源是一个RESTful Rails应用程序。 我们应该使用Core Data在本地缓存数据。 客户端代码(我们的UI控制器)应尽可能少地了解任何网络内容,并应使用Core Data API查询/更新模型。 我已经检查了有关构建服务器驱动的用户体验的WWDC10会议117,并花了一些时间检查了Objective Resource,Core Resource和RestfulCoreData框架。 Objective Resource框架不会自己与Core Data对话,而仅仅是REST客户端实现。Core Resource和RestfulCoreData都假定您在代码中与Core Data进行了对话,并且它们解决了模型层背景中的所有细节。 到目前为止,一切看起来还不错,尽管我最初虽然Core Resource或RestfulCoreData都可以满足上述所有要求,但是...有几件事似乎似乎都无法正确解决: 将本地更新保存到服务器时,不应阻止主线程。 如果保存操作失败,则错误应传播到UI,并且不应将任何更改保存到本地Core Data存储。 当您调用- (BOOL)save:(NSError **)error托管对象上下文时,核心资源恰巧将所有请求发送给服务器,因此能够以某种方式向服务器提供基础请求的正确NSError实例失败。但是它将阻塞调用线程,直到保存操作完成。失败。 RestfulCoreData使您的-save:调用保持完整,并且不会为客户端线程引入任何额外的等待时间。它仅注意NSManagedObjectContextDidSaveNotification,然后在通知处理程序中向服务器发出相应的请求。但这种方式的-save:呼叫总是成功完成(当然,考虑到核心数据是好的,与保存的更改)和客户端的代码,居然叫它没有办法知道节省,可能也没有传播到因为一些服务器404或421或任何发生服务器端错误。甚至更多,本地存储变得可以更新数据,但是服务器永远不知道这些更改。失败。 因此,我正在寻找解决所有这些问题的可能的解决方案/通用做法: -save:在网络请求发生时,我不希望调用线程在每次调用时都阻塞。 我想以某种方式在用户界面中收到一些同步操作出错的通知。 如果服务器请求失败,我也希望实际的核心数据保存失败。 有任何想法吗?

5
iCloud基础知识和代码示例
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案能得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 9年前关闭。 作为一个初学者,我正在为iCloud奋斗。有一些示例,但是它们通常都非常详细(在开发人员论坛上,有一个针对iCloud和CoreData的示例非常庞大)。在苹果的文档都OK,但我仍然无法看到大局。因此,请允许我,其中一些问题是非常基本的,但可能很容易回答。 上下文:我有一个非常简单的iCloud应用程序正在运行(下面是完整的示例代码)。仅向用户显示一个UITextView,并且他/她的输入保存在一个名为text.txt的文件中。 txt文件被推送到云中,并可供所有设备使用。完美运行,但是: 主要问题:不使用iCloud的用户呢? 启动应用程序时(请参见下面的代码),我会检查用户是否启用了iCloud。如果启用了iCloud,则一切正常。该应用程序继续运行,并在云中查找text.txt。如果找到,它将加载它并显示给用户。如果在云中找不到text.txt,它将仅创建一个新的text.txt并将其显示给用户。 如果用户未启用iCloud,则不会发生任何事情。如何使非iCloud用户仍然可以使用我的文本应用程序?还是我只是忽略它们?我是否需要为非iCloud用户编写单独的功能?即我仅从documents文件夹中加载text.txt的函数? 苹果写道: 以与对待应用程序沙箱中所有其他文件相同的方式对待iCloud中的文件。 但是,就我而言,再也没有“普通”应用程序沙箱了。在云中。还是我总是先从磁盘上加载text.txt,然后与iCloud检查是否还有最新信息? 相关问题:文件结构-沙箱与云 也许我的主要问题是对iCloud应该如何工作的根本误解。创建UIDocument的新实例时,我将不得不覆盖两个方法。首先- (BOOL)loadFromContents:(id)contents ofType:(NSString *)typeName error:(NSError **)outError从云-(id)contentsForType:(NSString *)typeName error:(NSError **)outError中获取文件,然后将文件添加到云中。 我是否必须合并单独的功能,这些功能也会将text.txt的本地副本保存到我的沙箱中?这对非iCloud用户有效吗?据我了解,iCloud会自动保存text.txt的本地副本。因此,我不需要将任何内容保存到应用程序的“旧”沙箱中(即,它曾经在iCloud之前的旧年代使用)。目前,我的沙箱完全是空的,但我不知道这是否正确。我是否应该在其中保留另一个text.txt副本?感觉就像混乱的数据结构...因为云中有一个text.txt,设备上的iCloud沙箱中有一个text.txt(即使我离线也可以使用),而旧的沙箱中的第三个则是。我的应用程式... 我的代码:一个简单的iCloud示例代码 这大致基于我在开发人员论坛和WWDC会话视频中找到的示例。我将其剥离到最低限度。我不确定我的MVC结构是否良好。该模型位于AppDelegate中,并不理想。欢迎提出任何改善建议。 编辑:我试图提取主要问题并将其发布[此处]。4 概述: 最重要的一点是从云中加载text.txt: // AppDelegate.h // iCloudText #import <UIKit/UIKit.h> @class ViewController; @class MyTextDocument; @interface AppDelegate : UIResponder <UIApplicationDelegate> { NSMetadataQuery *_query; } @property (strong, nonatomic) UIWindow …

10
按下按钮获取UITableView单元格的行
我有一个显示一行单元格的tableview控制器。每个单元都有3个按钮。我已将每个单元格的标签编号为1,2,3。问题是我不知道如何找到在哪个单元格上按下了按钮。我目前仅在按下其中一个按钮时才得到发件人的标签。当按下按钮时,是否还有办法获取单元格的行号?


6
以编程方式创建布局约束
我知道很多人已经问过很多问题,但是即使有了答案,我也无法解决。 当我处理情节提要上的约束时,这很容易,但是在代码中我很难过。例如,我尝试让视图停留在右侧,并根据屏幕方向显示屏幕高度。这是我的代码: UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 748)]; myView.backgroundColor = [UIColor redColor]; [self.view addSubview:myView]; [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[myView(>=748)]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(myView)]]; 它不满足某些约束。我看不出有什么问题。另外,为什么我不能使用像这样的属性self.myView而不是像这样的局部变量myView?


5
没有AVPlayer代表吗?如何跟踪歌曲播放完毕的时间?目标C iPhone开发
我环顾四周,但找不到的委托协议AVPlayer class。是什么赋予了? 我正在使用其子类AVQueuePlayer来播放的数组AVPlayerItems,每个数组都是从URL加载的。歌曲播放完毕后,有什么方法可以调用方法?明显在队列末尾吗? 如果那是不可能的,那么在歌曲开始播放后,缓冲之后,有什么方法可以调用该方法吗?我正在尝试在其中添加一个加载图标,但是即使在[audioPlayer play]操作之后,它也会在音乐真正开始之前将其关闭。



7
iOS 11-键盘高度在键盘通知中返回0
我一直在使用键盘通知,没有任何问题,并获得确切的键盘高度。 - (void)keyboardDidShow:(NSNotification *) notification{ CGSize keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; NSLog(@"%f",keyboardSize.height);} 但在iOS 11中,调用通知时键盘的大小为0。 在这种情况下会发生什么问题?我正在使用xcode 9 Beta 5

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.