小编MeX*_*eXx的帖子

自动@property合成不适用于NSManagedObject子类

在昨晚更新到适用于iOS6的最新版Xcode 4.5之后,我得到了类似的警告和错误

属性'mapAnnotation'需要定义方法'mapAnnotation' - 使用@synthesize,@ dynamic或在此类实现中提供方法实现

因为缺少@synthesize语句,甚至是关于未知iVars的错误,如果我使用它们.

问题是,我认为没有必要写这些@synthesize语句自从Mountain Lion发布的最后一个Xcode Update 4.5以来,并且在我昨晚更新Xcode之前我的所有项目都没有它们(我删除了)从我的文件回来的一大堆@synthesize语句然后它甚至还在Release-Notes中:

•使用属性时,默认情况下会生成Objective-C @synthesize命令.

所以我很困惑,我错过了一个新的项目设置,它会自动生成@synthesize一代吗?

但是,当我创建一个新项目并尝试它时,它甚至都无法工作

xcode properties synthesize ios6

25
推荐指数
1
解决办法
9492
查看次数

Xcode:条件DEBUG/TEST代码的预处理器宏

我的代码中有一些部分(例如在AppDelegate.m中)不应该为单元测试编译,比如

#ifndef CONFIGURATION_TESTS
// Code that should not be compiled in the Unit Tests
#endif
Run Code Online (Sandbox Code Playgroud)

在创建新项目时选择"添加单元测试"时,Xcode会设置目标.在项目文件中,我已将标志CONFIGURATION_TESTS添加到MyAppTests Built-Target的预处理器宏中,但未添加到MyApp目标.

这是我发现的许多帖子中的建议方式.

但这不起作用,因为(我猜)MyAppTests目标将MyApp目标作为依赖项,并且因为AppDelegate.m被添加到MyApp目标,它将使用MyApp构建设置进行编译,因此,未定义CONFIGURATION_TESTS .

在单元测试文件中,宏被定义并按预期运行(因为测试文件只由MyAppTests目标构建?)

有谁知道这是怎么做的,我认为这将是一个常见的问题......

debugging macros xcode preprocessor unit-testing

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

旋转后topLayoutGuide未更新

我有一个viewController(mainView),支持iPhone上的每个方向.从这个视图中,另一个viewController呈现出模态样式,它仅支持纵向方向(并相应地强制方向).

通常,topLayoutGuide位于y = 20px,右下方工具栏的布局附加到topLayoutGuide现在我有以下事件序列

  • 以纵向显示mainView
  • 纵向打开模态视图
  • 转向横向(模态视图显然保持纵向)
  • 关闭模态视图并返回mainView

在此之后,topLayoutGuide突然在y = 0px处,因此,工具栏位于状态栏上方,并且在mainView中旋转后也保持该值.

有谁知道如何更新(或强制)topLayoutGuide回到20px?

autolayout ios7

6
推荐指数
1
解决办法
647
查看次数

iOS 13 UISearchController + UIRefreshControl 故障

我正在使用UISearchControllerfor 搜索,UITableViewController它也支持通过UIRefreshControl.

在简化的 Demo 项目中设置非常简单

override func viewDidLoad() {
  extendedLayoutIncludesOpaqueBars = true
  title = searchTerm ?? "Search"
  super.viewDidLoad()
  setupSearch()
  setupRefresh()
}

private func setupSearch() {
  searchController.searchResultsUpdater = self
  navigationItem.searchController = searchController
  definesPresentationContext = true

  //
  //  If this is set to `true` (which is also the default), 
  // UISearchBar and UIRefreshcontroll are buggy
  //
  navigationItem.hidesSearchBarWhenScrolling = true
}

private func setupRefresh() {
  refreshControl = UIRefreshControl()
  refreshControl?.addTarget(self, action: #selector(refresh), for: .valueChanged)
}
Run Code Online (Sandbox Code Playgroud)

这在 iOS 12 …

uitableview ios uirefreshcontrol uisearchcontroller ios13

6
推荐指数
1
解决办法
1245
查看次数

指定实现协议的类

由于有2个协议P1P2,可以指定符合两国的协议,如类型:

typealias P = protocol<P1, P2>
Run Code Online (Sandbox Code Playgroud)

是否有类似的方式来指定类型的类型,并且也符合协议,例如像这样的东西(不起作用):

typealias P = UIView: P1
Run Code Online (Sandbox Code Playgroud)

swift swift-protocols

5
推荐指数
1
解决办法
186
查看次数

Rx Swift语法混乱

我正在阅读raywenderlich的Rx-Reactive编程书籍,并对Rx Swift的这种语法感到困惑:

extension PHPhotoLibrary {
    static var authorized: Observable<Bool> {
        return Observable.create({ observer in
            DispatchQueue.main.async {
                if authorizationStatus() == .authorized {
                    observer.onNext(true)
                    observer.onCompleted()
                } else {
                    observer.onNext(false)
                    requestAuthorization({ newStatus in
                        observer.onNext(newStatus == .authorized)
                        observer.onCompleted()
                    })
                }
            }

            return Disposables.create()
        })
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么代码中有两个return语句?有人可以解释一下为什么我们在代码中需要2个return语句吗?

ios swift rx-swift reactive

-1
推荐指数
1
解决办法
257
查看次数