小编Pet*_*isu的帖子

iOS9在后台无法跟踪位置

我的应用程序跟踪位置在后台...位置背景模式已启用,我使用

[self.locationManager startUpdatingLocation];
Run Code Online (Sandbox Code Playgroud)

这很好用,iOS7-8但它停止了工作iOS9

在模拟器中它可以工作,但在真实设备上我在后台没有回调...当在iOS8设备上运行相同的代码时,我得到正常的回调

这记录了吗?为什么它在模拟器中工作而不在设备中?这是一个错误吗?

当使用startSignificantChangeUpdates它在iOS9上工作时,我想知道这是否是某种节电功能,他们可能禁止startUpdatingLocation

gps cocoa-touch cllocationmanager ios

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

Cocoa阻止作为强大的指针与副本

我用块做了好几次,就像我有强烈参考的指针一样

我听说你应该使用copy,但是使用块作为指针而不是原始对象的含义是什么?

我从来没有得到编译器的抱怨,我不应该使用

@property (nonatomic, strong) MyBlock block;
Run Code Online (Sandbox Code Playgroud)

但应该使用

@property (nonatomic, copy) MyBlock block;
Run Code Online (Sandbox Code Playgroud)

据我所知,块只是一个对象,所以为什么还要复制?

cocoa objective-c objective-c-blocks automatic-ref-counting

21
推荐指数
1
解决办法
6771
查看次数

glFlush()vs [[self openGLContext] flushBuffer] vs glFinish vs glSwapAPPLE vs aglSwapBuffers

使用NSOpenGLView时,有几个类似的OpenGL操作:

  • glFlush()
  • [[self openGLContext] flushBuffer]
  • glFinish()
  • glSwapAPPLE
  • aglSwapBuffers

什么时候应该使用它们?

在示例应用程序中,Apple使用glFlush(),然后使用[[self openGLContext] flushBuffer].他们为什么要同时使用这两种?

如果我使用双缓冲的Cocoa NSOpenGLView,那么正确的方法是什么?

opengl macos cocoa

18
推荐指数
2
解决办法
5126
查看次数

WKWebView捕获HTTP错误代码

当我从我的页面返回任何http错误(目前是401,但我也试过404等等)

http://min60.com/__personal/e401.php

WKWebView的委托回调不会返回错误

- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error

- (void)webView:(WKWebView *)webView didFailNavigation:(null_unspecified WKNavigation *)navigation withError:(NSError *)error {
Run Code Online (Sandbox Code Playgroud)

如何捕捉到这样的错误?

cocoa-touch objective-c ios wkwebview

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

NSOperation等待异步块执行

我需要将异步操作放入操作队列,但是,它们需要在另一个之后执行

self.operationQueue = [NSOperationQueue new];
self.operationQueue.maxConcurrentOperationCount = 1;

[self.operationQueue addOperationWithBlock:^{

    // this is asynchronous
    [peripheral1 connectWithCompletion:^(NSError *error) {

    }];

}];

[self.operationQueue addOperationWithBlock:^{

    // this is asynchronous
    [peripheral2 connectWithCompletion:^(NSError *error) {

    }];

}];
Run Code Online (Sandbox Code Playgroud)

问题是,由于peripheralN connectWithCompletion是异步的,队列中的操作结束而下一个执行,我需要模拟,peripheralN connectWithCompletion是同步的并等待操作结束,直到异步块执行

所以我需要这样的行为,只使用操作队列

    [peripheral1 connectWithCompletion:^(NSError *error) {

            [peripheral2 connectWithCompletion:^(NSError *error) {

            }];

    }];
Run Code Online (Sandbox Code Playgroud)

cocoa asynchronous nsoperation nsoperationqueue

17
推荐指数
2
解决办法
4736
查看次数

iOS客户端,Facebook API和服务器之间的安全通信

我想用Facebook登录实现一个iOS应用程序.我希望我的应用的用户能够与他们的社交图进行交互(即发布到他们的流).为此,我将使用Facebook iOS SDK.
当用户已经通过Facebook进行身份验证时,他们也应该能够在我的应用程序的服务器端使用某些服务.如何根据服务器上的服务验证用户?

在我的iOS应用程序中,我可以使用iOS Facebook SDK查询访问令牌(对于我的Facebook应用程序).我应该将该访问令牌与facebook用户ID一起发送到我的服务器吗?服务器可以验证访问令牌是否有效吗?或者只应该我的iOS应用程序与Facebook API进行通信?服务器可以发布到我的Facebook墙上,还是应该通过iOS应用程序完成?

security iphone facebook facebook-graph-api ios

16
推荐指数
1
解决办法
3525
查看次数

NSButton mouseDown mouseUp在启用时表现不同

如果未启用NSButton,则mouseDown:和mouseUp:按预期运行(因此,当按下鼠标时,将调用mouseDown:,当它被释放时,将调用mouseUp:)

但是,如果启用了NSButton IS,则完全不会调用mouseUp:并且在鼠标释放后调用mouseDown:

- (void)mouseDown:(NSEvent *)theEvent {
    [super mouseDown:theEvent];
}

- (void)mouseUp:(NSEvent *)theEvent {
    [super mouseUp:theEvent];
}
Run Code Online (Sandbox Code Playgroud)

为什么这种行为有所不同,我如何强制执行正确的行为(与未启用按钮时相同)

macos cocoa nsview nsbutton nscontrol

13
推荐指数
3
解决办法
4401
查看次数

带有 pinToVisibleBounds 的 UICollectionView 组合布局标头被单元格奇怪地遮挡

我正在使用 UICollectionView 组合布局,并希望有一个粘在顶部的标题

这应该可以与

header.pinToVisibleBounds = true
Run Code Online (Sandbox Code Playgroud)

但是,在滚动过程中,标题会奇怪地被遮挡,看起来像一个错误...此外,看起来只有位于可见屏幕之外的单元格,当重新加载时,会遮挡标题

迅速

你可以在这个视频中看到它 https://www.dropbox.com/s/n5myzfceuiwzb39/stackoverflow-unsatable-header.mov?dl=0

这就是整个布局的构建方式

func buildLayout() -> UICollectionViewCompositionalLayout {

    // cells
    let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(0.5), heightDimension: .absolute(90))
    let item = NSCollectionLayoutItem(layoutSize: itemSize)
    item.contentInsets = NSDirectionalEdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0)

    let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1), heightDimension: .absolute(90))
    let group = NSCollectionLayoutGroup.horizontal(layoutSize: groupSize, subitem: item, count: 2)
    group.contentInsets = NSDirectionalEdgeInsets(top: 0, leading: 20, bottom: 0, trailing: 20)
    group.interItemSpacing = .fixed(10)

    let section = NSCollectionLayoutSection(group: group)
    section.interGroupSpacing = 10
    section.contentInsets = NSDirectionalEdgeInsets(top: …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch uicollectionview uicollectionviewlayout swift uicollectionviewcompositionallayout

13
推荐指数
0
解决办法
5147
查看次数

使用未解析的标识符“kUTTypePDF”

如何在 Swift 中使用文件类型

根据 https://developer.apple.com/documentation/coreservices/kuttypepdf

这应该完全没问题

UIPasteboard.general.setData(Data(contentsOf: URL(fileURLWithPath: path)), forPasteboardType: kUTTypePDF)
Run Code Online (Sandbox Code Playgroud)

但它发出

Use of unresolved identifier 'kUTTypePDF'
Run Code Online (Sandbox Code Playgroud)

swift

12
推荐指数
2
解决办法
3815
查看次数

调用beginRefreshing并且contentOffset为0时,UIRefreshControl没有显示多刺

调用时我无法看到加载微调器 beginRefreshing

[self.refreshControl beginRefreshing];
Run Code Online (Sandbox Code Playgroud)

我的UITableViewController子类使用UIRefreshControl

// refresh
    UIRefreshControl * refreshControl = [UIRefreshControl new];
    [refreshControl addTarget:self action:@selector(refreshTableView) forControlEvents:UIControlEventValueChanged];
    self.refreshControl = refreshControl;
Run Code Online (Sandbox Code Playgroud)

它与用户交互完美配合(当用户将表放下时),然后可以看到微调器.

但是当我调用beginRefreshingviewDidLoad时,我没有看到微调器(只有当我向下拖动表时).

笔记:

  • self.refreshControl引用是对的

  • 在beginRefreshing之后不会立即调用reloadData或endRefreshing,但是有很长的时间延迟(通过网络加载数据),所以我没有取消beginRefreshing.

编辑: 这只发生在0和i调用的contentOffset属性时.错误?Feauture?tableView[self.refreshControl beginRefreshing]

uitableview ios6 uirefreshcontrol

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