小编Cla*_*ges的帖子

在Xcode 4.3中,我是否可以像以前一样要求正向方法声明

在Xcode 4.3之前,如果您想在声明其实现之前使用方法,则需要转发声明方法(与C函数原型一样).这通常在类继续(AKA类扩展,私有类别)中完成.这个问题有一个很好的例子:Objective-C中的私有方法,在Xcode 4.3中我不再需要在我的实现文件中声明它们了吗?.

从4.3开始,不再需要这个; 干燥者欢欣鼓舞.

但这种魔法可以关闭,回到4.3之前的行为吗?

xcode objective-c forward-declaration xcode4.3

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

Xcode 5.1:以任何方式抑制恢复/“保留 Xcode 版本”对话框

从 Xcode 5.1 开始,当我从 Xcode 下更改项目时(在我的情况下,最常见的是通过检查另一个 git commit),它会抛出一个烦人的对话框,即使在不活动时也是如此:

在此处输入图片说明

更糟糕的是,我正在使用 Spaces(或任务控制......不管它现在叫什么),并且对话框与 Xcode 分离并丢失,但它是模态的并且阻止 Xcode 接受输入。有时我会找到它,或者它会在 Xcode 空间中弹出。有时这需要在 Xcode 上强制退出才能重新获得控制权。

每次更改提交时都没有退出 Xcode,有没有办法结束这种疯狂?

xcode xcode5.1

6
推荐指数
2
解决办法
3899
查看次数

在Mac OS X应用程序包中打包C二进制文件

我正在尝试将我的二进制文件打包到一个简约的应用程序包中.但是我看到结果有些奇怪的行为.

我的包有这个最小的结构:

$ ls -R HelloWorld.app
Contents

HelloWorld.app/Contents:
Info.plist MacOS      PkgInfo

HelloWorld.app/Contents/MacOS:
helloworld
Run Code Online (Sandbox Code Playgroud)

helloworld是一个C二进制文件,编译自:

#include <stdio.h>
#include <unistd.h>

int main(int argc, char **argv) {
    while (1) {
        printf("Hello world!\n");
        sleep(2);
    }

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

Info.plist包含:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleExecutable</key>
    <string>helloworld</string>
    <key>CFBundleIdentifier</key>
    <string>com.litl.helloworld</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>HelloWorld</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleShortVersionString</key>
    <string>1.0.0</string>
    <key>CFBundleVersion</key>
    <string>20</string>
    <key>LSMinimumSystemVersion</key>
    <string>10.6</string>
    <key>LSUIElement</key>
    <true/>
    <key>LSBackgroundOnly</key>
    <true/>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

现在为了奇怪的行为.我跑的时候

open ./HelloWorld.app
Run Code Online (Sandbox Code Playgroud)

该命令挂起约30秒.之后,我可以确认helloworld二进制文件正在运行.但是它的标准输出不会出现在Console.app中.如果我以编程方式启动此捆绑包(NSWorkspace sharedWorkspace)launchApplicationAtURL ...)调用成功,但二进制文件立即退出(我可以在控制台中看到它退出时出现错误代码2).

这是在OS X 10.9.2上.

我究竟做错了什么?

macos bundle launchd app-bundle

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

如何知道PHAsset是否已被修改?

更具体地说,您如何知道PHAsset当前版本的标的资产是否与原始资产不同?

我的用户只需要在必要时在当前或原始资产之间进行选择.然后我需要他们的回答PHImageRequestOptions.version.

objective-c photos ios photokit

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

你能用PhotoKit获取"最近删除"中的照片吗?

我已经扫描了API,到目前为止一无所获.我会选择PHAssetCollection"最近删除",或者获取个人PHAsset的方式.

我不推荐(或不推荐),但API 之外还有一些解决方案,但可能仍然是AppStore-passable:

  1. 您可以使用未记录的智能相册ID"最近删除",1000000201.看到这个问题.

  2. 您可以对文本"assetSource=3"进行过滤PHAsset.description,请参阅此SO答案.

ios ios8 photosframework photokit

6
推荐指数
0
解决办法
1454
查看次数

如何在 macOS 上使用 cli 命令启动 docker 桌面而不显示仪表板?

我有一个 cli 命令,可以在 macOS 上的 Docker 桌面环境未运行时启动它。

open --background -a Docker
Run Code Online (Sandbox Code Playgroud)

它曾经在启动时没有 docker 仪表板弹出窗口的情况下工作(仅在顶部栏中显示为图标,这很好),但自从版本 2.4.0.0 更新后,它不再隐藏了?我尝试添加 --hide 选项,如下所示:

open --hide --background -a Docker
Run Code Online (Sandbox Code Playgroud)

但这没有用。启动时是否可以禁用或隐藏 Docker 仪表板弹出窗口?

macos desktop dashboard hide docker

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

如何知道 PHAssetCollection 是否是最近删除的集合?

最近添加的集合有一个子类型:PHAssetCollectionSubtypeSmartAlbumRecentlyAdded。但是没有 assetCollectionSubtype可以识别“最近删除”集合的信息。

这是我的案例中“最近删除”集合的描述: (iOS 8.1.3): DF876BFD-...-C97F4628467C/L0/040 Recently Deleted assetCollectionType=2/1000000201

这表明它是类型PHAssetCollectionTypeSmartAlbum。但子类型到底是什么1000000201

201应该PHAssetCollectionSubtypeSmartAlbumPanoramas根据文档。

这个神奇的数字可以1000000201相信永远不会改变吗?可能不会。

但是,您可以通过以下方式检索最近删除的集合:

PHFetchResult *smartAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:1000000201 options:nil];
Run Code Online (Sandbox Code Playgroud)

这个特定的智能相册有一个主要区别:PHAssets 不能(再次)删除,因为这是垃圾。因此,了解是否应向用户提供删除选项至关重要。

有人有想法吗?

cocoa cocoa-touch photokit

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

如何通过 CocoaPods 使用本地项目

我正在努力寻找一种方法将我们创建的 Xcode 框架打包为一个只能在内部使用的 Pod(不是公开的,也不是在 github 上)。

如何修改.podspec以从我的开发机器上的本地 Xcode 项目构建 SDK?

xcode objective-c ios cocoapods podspec

5
推荐指数
2
解决办法
6446
查看次数

iOS崩溃报告,例如在beta测试期间

我将准备在下个月开始测试我的iPhone应用程序,我想我应该期待它崩溃一两次.将崩溃报告 - 以及我能提供的任何支持信息 - 都归还给母舰将是一件好事.理想情况下,这对beta测试人员来说几乎不需要工作.

有工具和方法.到目前为止,对我来说,最有前途的竞争者是CrashKit.我也看过Crash Reporter.我从2008年开始回顾这些Craig Hockenberry的帖子("备份调试","符号化").

我忽略了一些明显的东西吗 人们还有什么进一步的建议吗?

iphone crash debugging ios

4
推荐指数
1
解决办法
1823
查看次数

UICollectionView:发送到实例的无法识别的选择器

我收到了这个错误. *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UICollectionViewCell label]: unrecognized selector sent to instance 0x1eead660'我正在使用一个nib文件作为我的单元格并尝试正确显示单元格.我猜我没有正确地返回细胞,但我不太确定.任何帮助将不胜感激.

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView    cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"Cell";
    [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"Cell"];
    Cell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];

    NSMutableArray *data = [sections objectAtIndex:indexPath.section];

    cell.label.text = [data objectAtIndex:indexPath.item];

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

xcode objective-c ios

4
推荐指数
1
解决办法
6852
查看次数