小编Ste*_*ton的帖子

Objective-C:在iPhone上访问REST API的最佳方式

一段时间以来一直在努力.我正在尝试在我的iphone上访问REST api,并且遇到了可以帮助我的ASIHTTP框架.所以我做了类似的事情

//call sites, so we can confirm username and password and site/sites
NSURL *url = [NSURL URLWithString: urlbase];
ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:url] autorelease];
[request setUsername:@"doronkatz%40xx.com" ];
[request setPassword:@"xxx"];
Run Code Online (Sandbox Code Playgroud)

urlbaseREST站点的URL 在哪里.

现在,开发人员告诉我这个框架可能存在问题或错误,而且它没有正确传递头文件.是否有另一种方法可以通过身份验证来测试或访问网络REST位置?

iphone rest web-services objective-c

29
推荐指数
3
解决办法
5万
查看次数

在UITableViewCell内编辑UITextField失败

在我的应用程序中,我有一个UITextField内部UITableViewCell.如果我在文本字段内单击并添加一些文本,我发现如果尝试移动插入点,它会在第一次工作但在后续尝试时失败.我完全无法移动选择; 没有"放大镜"出现.

更奇怪的是,这个"设置"似乎是永久性的,直到我重新启动应用程序.它会影响UITextFields该屏幕上的所有内容,而不仅仅是我最初尝试编辑的内容.

如果您想亲眼看到它,请尝试iPhone SDK附带的"UICatalog"示例.单击"文本字段",然后"编辑"并使用文本框.

我已经做了很多挖掘,但谷歌很难做到!我发现的最好的参考资料是Apple的支持板MacRumors formum(两者都参考了一个显然曾经用于iPhone 2.0的解决方案,但不适用于当代版本 - 我确实尝试过).

我觉得这是操作系统中的一个错误,但我想我会把它扔到SO人群中以获得第二意见并看看是否有任何变通方法.有任何想法吗?

根据benzado的建议,我尝试使用2.0,2.1和2.2 SDK构建我的应用程序.我在所有版本中都有相同的行为.(实际上,相关但不相同的东西在2.2中破裂但这可能是另一个问题!)

iphone cocoa-touch

24
推荐指数
1
解决办法
3万
查看次数

在后台线程中显示UIAlertView

我从后台线程中的Web服务加载数据.UIAlertView当出现任何问题或在主线程中显示警报视图时,在后台线程中显示是否安全?

感谢您的建议

坦率

iphone objective-c

23
推荐指数
2
解决办法
2万
查看次数

何时使用括号以及何时使用Objective-C中的句点

我是一名新的iPhone/Objective-C开发人员,因为我正在阅读不同的教程和开源代码,我在理解何时使用方括号"[]"以及何时使用句点时遇到一些问题"."用于访问对象的属性/方法.

例如,这段代码:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {

  [super setSelected:selected animated:animated];

  UIColor *backgroundColor = nil;
  if (selected){
    backgroundColor = [UIColor clearColor];
  } else {
    backgroundColor = [UIColor whiteColor];
  }

  self.todoTextLabel.backgroundColor = backgroundColor;
  self.todoTextLabel.highlighted = selected;
  self.todoTextLabel.opaque = !selected;

  self.todoPriorityLabel.backgroundColor = backgroundColor;
  self.todoPriorityLabel.highlighted = selected;
  self.todoPriorityLabel.opaque = !selected;
}
Run Code Online (Sandbox Code Playgroud)

为什么[UIColor clearColor]得到括号,但todoTextLabel.backgroundColor得到句号?

有人能为我轻松解释一下吗?

objective-c

15
推荐指数
3
解决办法
6936
查看次数

两个iPhone模拟器同时?

是否可以同时在两个iphone模拟器中运行iphone应用程序?如果是,请告诉我?

iphone xcode ios-simulator

13
推荐指数
1
解决办法
2万
查看次数

如何将我的iOS网络请求限制为一秒

许多(如果不是大多数)Web服务对客户都有速率限制.Delicious说客户每秒可以提出一个请求; Twitter每个终点都有限制; 我确信Facebook和Flickr以及Foursquare都有自己的想法.

您可以使用a一次轻松地将iOS应用程序限制为单个请求NSOperationQueue.

但是,如何将应用程序限制为每秒只生成一个请求?

我查看过Apple,AFNetworking,ASINetwork和其他一些代码的示例代码,似乎都没有解决这个问题.这对我来说似乎很奇怪.我会承认我可能会遗漏一些非常明显的东西......

一些参数:

  • 假设我有一个NSOperationQueue用于网络操作并且请求是一个NSOperation(我想也可能是一个GCD队列,但这是我一直在使用的)
  • 队列中的每个请求都使用相同的速率限制
  • 我正在寻找iOS中的解决方案,但一般的想法可能会有用

可能的解决方案:

  • sleepNSOperation(这是一个队列/线程中的语句,所以这不会阻止其他任何东西)
  • NSTimer 在里面 NSOperation
  • performSelector:NSOperation(我修补ASINetworking使用这种方法,虽然我没有使用它,并没有推动上游的变化)
  • 启动/停止队列(使用KVO?)以确保不超过速率限制
  • 特别"睡觉" NSOperation.这将是下一个网络操作将依赖的任务
  • 完全忽略速率限制,只是在收到"超出速率限制"错误响应时暂停一下

这些看起来都很混乱.睡眠的操作可能会阻止形式的"优先级"队列.启动/停止队列似乎很脆弱.忽略限制是粗鲁的.

要清楚,我已经解决了这个问题.但解决方案似乎"凌乱"而且有些脆弱.我想知道是否有更好,更清洁的选择.

想法?

objective-c ios

12
推荐指数
1
解决办法
2278
查看次数

如何检测我的iOS应用程序是否有更新版本?

如果iTunes提供新版本,我想在我的iOS应用中提供提醒.我找不到这个API.这可能吗?

iphone ipad ios

9
推荐指数
1
解决办法
3883
查看次数

UIActivity activityViewController不会在iPad上解散

我有一个UIActivity创建自己的子类activityViewController:

- (UIViewController *)activityViewController {
    WSLInProgressViewController* progressView = [[[WSLInProgressViewController alloc] init] autorelease];
    progressView.message = [NSString stringWithFormat:NSLocalizedString(@"Posting to %@...",@"Posting to..."),
                        self.activityType];

    return progressView;
}
Run Code Online (Sandbox Code Playgroud)

在GitHub上添加了一个完整的repro.


根据文档,您不应该手动解雇.相反,操作系统会在您打电话时执行此操作activityDidFinish:.这在iPhone上运行时工作正常.

当我说"工作"时,这是我期待的事件序列(并在iPhone上看到):

  1. 显示 UIActivityViewController
  2. 用户按下我的自定义活动
  3. 我的视图控制器出现
  4. 我打电话 activityDidFinish:
  5. 我的自定义视图控制器被关闭
  6. UIActivityViewController还驳回

但是,当我在iPad模拟器上运行相同的代码时 - 唯一的区别是我把它UIActivityViewController放在弹出窗口中,正如文档所说的那样 - activityViewController永远不会解散.

正如我所说,这是代码wo/popUP在iPhone上工作,我已经逐步完成了代码,所以我知道它activityDidFinish:正在被调用.

我发现这个雷达iOS6beta 3中讨论了相同的问题,但它似乎是我怀疑我的代码而不是操作系统中的错误的基本功能(也注意它与Twitter和Facebook功能正常工作!).


我错过了什么吗?当activityViewController运行时,我是否需要在activityViewController中做一些特别的事情UIPopoverViewController?iPad上的"流量" 应该是不同的吗?

ipad ios6 uiactivity

9
推荐指数
3
解决办法
3565
查看次数

奇怪的iPhone崩溃日志

任何人都可以告诉我这次崩溃的原因.

特别是我担心这个 -

**Application Specific Information:
iMixtapes[1185] has active assertions beyond permitted time: 
{(
    <SBProcessAssertion: 0x66bc490> identifier: UIKitBackgroundCompletionTask process: iMixtapes[1185] permittedBackgroundDuration: 600.000000 reason: finishTask owner pid:1185 preventSuspend  preventIdleSleep ,
    <SBProcessAssertion: 0x66ade50> identifier: UIKitBackgroundCompletionTask process: iMixtapes[1185] permittedBackgroundDuration: 600.000000 reason: finishTask owner pid:1185 preventSuspend  preventIdleSleep 
)}
Elapsed total CPU time (seconds): 106.580 (user 62.160, system 44.420), -3% CPU 
Elapsed application CPU time (seconds): 1.700, 0% CPU**
Run Code Online (Sandbox Code Playgroud)

这是崩溃日志:

Incident Identifier: C5DFDDE4-2AE0-461A-937A-C422353102CE
CrashReporter Key:   3a88f20a9e18f468445bddc212b7aa673c6dc89b
Hardware Model:      iPod4,1
Process:         iMixtapes [1185]
Path:            /var/mobile/Applications/104BD0F8-BC33-43A9-AB9F-FC609750C4B6/iMixtapes.app/iMixtapes
Identifier: …
Run Code Online (Sandbox Code Playgroud)

iphone crash-reports

8
推荐指数
1
解决办法
7275
查看次数

图标,资产目录和Info.plist混淆

我有一个应用程序,从iOS 5开始生活,并从那时起一直在更新.对于iOS 7,我已经切换到使用资产目录来获取所有资源,这很不错并且似乎运行良好.但是,当我尝试提交给Apple时,我收到验证错误:

图像路径无效 - 在"CFBundleIconFiles"键下引用的路径中找不到图像:"Icon@2x.png"

我也得到了其他图标的相同错误.这些图标确实出现在资产目录中,名称 - 直到案例 - 完全符合我的判断.资产目录位于"复制捆绑资源"中,当我在iPhone和iPad(iOS 7)和iOS 6的模拟器中运行应用程序时,所有资源都显示在正确的位置.

我已更新应用程序以使用iOS 6的最低部署目标.

那么,我如何成功将更新提交给Apple?我是否需要Info.plist中的引用?我还应该检查其他任何设置吗?警告是否是虚假的,我应该忽略一些事情(在提升雷达之后)?

info.plist ios7 asset-catalog

8
推荐指数
1
解决办法
1万
查看次数