小编Bin*_*ian的帖子

您知道哪些iPhone OS内存管理规则和操作方法?

目前我正在进入名为"iPhone OS中的内存管理"的冰冷水中.

这是我学到的一条规则:

每次我在我的方法中看到一个alloc时,我都会在方法的底部发布相应的变量.

每次我在我的头文件中创建一个@property(...)表示复制或保留时,我将该变量的释放消息放入dealloc方法.

每次我有IBOutlet,我都会做同样的事情.唯一例外:如果IBOutlet具有类似@property(... assign)的内容,或者换句话说:如果它具有assign关键字.然后我不关心在dealloc方法中释放它.

我觉得还有很多好的规则要知道!记下你的所作所为.让我们一起刮掉它们.也欢迎链接到精彩的描述.

iphone memory-management objective-c uikit

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

一个类别如何运作?

我是objective-c的新手,需要扩展一个带有实例变量和访问器的框架的标准类.我听说这是用一个所谓的"类别"完成的,这对我来说听起来很混乱.这基本上如何工作?

objective-c

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

服务器上带有存储库查看器的独立 git 二进制文件

我有一台来自我公司的服务器。该服务器上未安装 git (并且在不久的将来也不会安装)。(在许多免费服务器托管网站上,也没有安装 git)

有没有办法在不安装 git 的情况下使用 git 二进制文件(因此不需要另一个文件夹中所需的依赖项,独立)?

另一个服务器对我来说是没有选择的。

我想要 git 作为 Web git 存储库查看器,这当然需要 git 二进制文件在任何文件夹中工作,也许有一个带有集成 git 二进制文件的 Web git 存储库查看器。


我试过:

服务器操作系统是linux 64位。我已将 git 二进制文件从本地 linux 复制到服务器上的可执行路径。它不起作用。所以我查找依赖关系。需要这些库:

  • libz.so.1
  • libresolv.so.2
  • libpthread.so.0
  • libpcre.so.3
  • libc.so.6

它们只是指向名为的库的链接:

  • libz.so.1.2.7
  • libresolv-2.17.so
  • libpthread-2.17.so
  • libpcre.so.3.13.1
  • libc-2.17.so

所以我重命名了这些库并将它们复制到 git 二进制文件所在的服务器。但不幸的是,git 二进制文件在 /lib/linux-64-gnu...os 文件夹中查找库,而不是在同一文件夹中。我不知道接下来要尝试什么。

linux git 64-bit self-hosting

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

@interface中带##的宏,是什么意思?

它做了什么,尤其是##

#define CUSTOM_ARRAY_INTERFACE(classname) \
@interface classname ## Array : ConcreteMutableArray \
- (void) add:(classname*)obj;\
- (classname*) get:(int)index;\
@end\
Run Code Online (Sandbox Code Playgroud)

CUSTOM_ARRAY_INTERFACE(NSString)然后产生什么,我的这个想法甚至不起作用

@interface NSString ## Array : ConcreteMutableArray
- (void) add:(classname*)obj;
- (classname*) get:(int)index;
@end
Run Code Online (Sandbox Code Playgroud)

是一种显示宏将扩展到什么代码的方法,而无需查看汇编代码?

objective-c c-preprocessor

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

如何强制纵向定位?

iOS 7如果我的应用程序最初支持两种方向,如何强制纵向方向?

objective-c ios landscape-portrait ios7

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

Passbook 产生 PKPass 错误

我在我的应用程序中添加了存折,当系统是iOS6.0时它可以正常工作。当系统是iOS7.1时它出现错误。

在此处输入图片说明

我检查代码发现

PKPass *newPass = [[PKPass alloc] initWithData:passData error:&error];
Run Code Online (Sandbox Code Playgroud)

在iOS6.0中生成PKPass时得到一个正确的PKPass,当系统是iOS7.1时得到一个nil。

错误包含消息是:

错误域=PKPassKitErrorDomain 代码=1“无法读取通行证,因为它无效。” UserInfo=0x175cd2f0 {NSUnderlyingError=0x175c2c10 “不止一个字段有键 'phone'。字段键必须是唯一的。”, NSLocalizedDescription=无法读取通行证,因为它无效。}

存折的数据我从服务器上得到的。代码如下

- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[self.connectionData appendData:data];
}
Run Code Online (Sandbox Code Playgroud)

将数据写入文件后,代码如下:

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES);
NSString* filePath  = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"pk.pkpass"];

if ([self.connectionData writeToFile:filePath atomically:YES]) {

    if (![PKPassLibrary isPassLibraryAvailable]) {

        UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Error"
                                                     message:@"PassKit not available"
                                                    delegate:nil
                                           cancelButtonTitle:@"Pitty"
                                           otherButtonTitles:nil];
        [alert show];
        [alert release];

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

写入文件后我想显示它,代码如下:

    NSString* passFile = [[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES) objectAtIndex:0] stringByAppendingPathComponent:name];

NSString * newPassStr = [[NSString alloc] initWithContentsOfFile:passFile encoding:NSUTF8StringEncoding error:nil]; …
Run Code Online (Sandbox Code Playgroud)

objective-c ios ios6 passbook ios7

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

为什么将未命名的函数作为变换传递给数组会在最远的抽象中在操场中向迭代计数添加一个

我正在根据Swift编程指南中的示例,将未命名的函数作为参数传递,并且我正在使用它来练习.

所以我们有一个Ints 数组:

var numbers: Int[] = [1, 2, 3, 4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)

我应用这样的变换:(7)

func transformNumber(number: Int) -> Int {
    let result = number * 3
    return result
}

numbers = numbers.map(transformNumber)
Run Code Online (Sandbox Code Playgroud)

等于:(7)

numbers = numbers.map({(number: Int) -> Int in
    let result = number * 3
    return result;
    })
Run Code Online (Sandbox Code Playgroud)

等于:(8)

numbers = numbers.map({number in number * 3})
Run Code Online (Sandbox Code Playgroud)

等于:(8)

numbers = numbers.map({$0 * 3})
Run Code Online (Sandbox Code Playgroud)

等于:(8)

numbers = numbers.map() {$0 * 3}
Run Code Online (Sandbox Code Playgroud)

正如您在下图中所看到的,操场侧栏中的迭代计数显示,在函数声明的最远抽象中,它具有8个计数.

在此输入图像描述

为什么它显示为最后两个示例的8次迭代?

swift

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

如何移动到多个视图控制器?

我想以编程方式使用Apple的新Swift语言从viewController移动到另一个.我用Google搜索并阅读了文档,我看到了如何使用单个ViewController.有没有人有关于如何在视图控制器之间切换的示例或文档?

uiviewcontroller swift

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

'Int'与'String.Index'不同

作为练习,我正在使用Swift重写我的一个应用程序.

在Objective-C中,我有以下代码行:

NSRange extendedRange = NSUnionRange(range, [[self.backingStore string]lineRangeForRange:NSMakeRange(NSMaxRange(range), 0)]);
Run Code Online (Sandbox Code Playgroud)

在swift中它看起来像这样:

let str = backingStore.string
let extendedRange: NSRange = NSUnionRange(range, str.lineRangeForRange(NSMakeRange(NSMaxRange(range), 0)))
Run Code Online (Sandbox Code Playgroud)

但是,由于某种原因,我得到'Int'与'String.Index'不同,我无法弄清楚为什么.任何帮助/见解将不胜感激.


编辑:

如果我桥接我的字符串,它的工作原理:

let str = backingStore.string
let extendedRange: NSRange = NSUnionRange(range, str.bridgeToObjectiveC().lineRangeForRange(NSMakeRange(NSMaxRange(range), 0)))
Run Code Online (Sandbox Code Playgroud)

objective-c ios swift

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

Swift错误:保留前缀/后缀'='

我收到错误消息:

前缀/后缀'='是保留的

对于以下简单的快速.

var c=0,a=2,b=4
c= a+b
Run Code Online (Sandbox Code Playgroud)

知道我为什么会收到这个错误吗?

ios swift xcode6

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