小编mk1*_*k12的帖子

iPhone开发 - 代理,通知,取消分配之前取消订阅?

在我关于使用委托或UIControl事件的问题中,这是在Kendall Helmstetter Geln的回答中:

两者都是一个相同的负载 - 与代表你必须自己设置,然后记得在你被解除分配之前取消自己.你必须对通知做同样的事情,记得开始听,然后在你被解除分配之前取消订阅.

他们是什么意思,在取消分配之前取消订阅,取消自己的设定?我没有做过任何事情.有人可以解释它是什么以及如何做到这一点?

谢谢!!

iphone events cocoa-touch delegates objective-c

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

OS X - 多个python版本,PATH和/ usr/local

如果你安装了多个版本的python(我目前有默认的2.5,安装了3.0.1,现在已经安装了2.6.2),它会自动放入内容/usr/local,并且还会调整路径以包含/Library/Frameworks/Python/Versions/theVersion/bin,但最重要的是什么时候/usr/local已经在PATH上了,所有已安装的版本(默认的2.5除外/usr/bin)都在那里?我删除了Python框架的路径从我的PATH中.bash_profile,我仍然可以输入"python -V" => "Python 2.5.1", "python2.6 -V" => "Python 2.6.2","python3 -V" => "Python 3.0.1".只是想知道为什么它把它放进去/usr/local,也改变了PATH.我做得很好吗?谢谢.

此外,2.6安装使它成为'当前',.../Python.framework/Versions/Current指向2.6.所以简单的'python'事情/usr/local/bin指向2.6,但它没关系,因为usr/bin第一个和同名的东西指向2.5东西..无论如何,2.5附带豹子,我安装3.0.1只是为了拥有最新版本(有一个dmg文件),现在我安装了2.6.2与pygame一起使用.

编辑:好的,这是我理解的方式.安装时,比方说,Python 2.6.2:添加了一堆符号链接/usr/local/bin,所以当#! /usr/local/bin/pythonpython脚本中有一个shebang时,它会运行,并且在/Applications/Python 2.6Python启动器中,默认应用程序运行.py文件,使用/usr/local/bin/pythonw,并/Library/Frameworks/Python.framework/Versions/2.6/bin创建并添加到路径的前面,因此which python将在那里获得python,并且#! /usr/bin/env pythonshebang将正确运行.

python macos path multiple-versions

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

Bash - $ PATH和$ {PATH}

使用环境变量(如PATH)作为$ PATH或$ {PATH}有什么区别?

bash shell terminal environment-variables

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

参数上的Python __init__ setattr?

通常__init__方法似乎与此类似:

def __init__(self, ivar1, ivar2, ivar3):
    self.ivar1 = ivar1
    self.ivar2 = ivar2
    self.ivar3 = ivar3
Run Code Online (Sandbox Code Playgroud)

有没有办法将参数转换为一个列表(不使用*args**kwargs),然后使用setattr设置实例变量,参数名称和参数传递?也许可以对列表进行切片,例如,您需要至少将其切片,[1:]因为您不需要self.self.

(实际上我想它需要是一个字典来保存名称和值)

像这样:

def __init__(self, ivar1, ivar2, ivar3, optional=False):
    for k, v in makedict(self.__class__.__init__.__args__): # made up __args__
        setattr(self, k, v)
Run Code Online (Sandbox Code Playgroud)

谢谢!

回应未知的答案,我发现这个工作:

Class A(object):
    def __init__(self, length, width, x):
        self.__dict__.update(dict([(k, v) for k, v in locals().iteritems() if k != 'self']))
Run Code Online (Sandbox Code Playgroud)

要么

Class A(object):
    def __init__(self, length, width, x):
        self.__dict__.update(locals())
        del self.__dict__['self']
Run Code Online (Sandbox Code Playgroud)

还不错..

python parameters initialization list setattr

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

iPhone开发 - 为什么使用8MB?

甚至当我只使用基于Window的应用程序模板时,仪器(活动监视器)说我的应用程序的进程是使用8.14MB的真实内存!即使使用这种方法:

void report_memory(void) {
    struct task_basic_info info;
    mach_msg_type_number_t size = sizeof(info);
    kern_return_t kerr = task_info(mach_task_self(),
                                   TASK_BASIC_INFO,
                                   (task_info_t)&info,
                                   &size);
    if( kerr == KERN_SUCCESS ) {
        NSLog(@"Memory in use (in bytes): %u", info.resident_size);
    } else {
        NSLog(@"Error with task_info(): %s", mach_error_string(kerr));
    }
}
Run Code Online (Sandbox Code Playgroud)

它还是~8.14 MB!所以看来仪器是正确的,但为什么UIWindow会占用那么多内存?

iphone memory-management

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

汇编器错误:Mach-O 64位不支持绝对32位地址

所以我正在我的mac上学习x86_64 nasm程序集以获得乐趣.在hello world和一些基本的算术之后,我尝试从这个站点复制一个稍高级的hello world程序并将其修改为64位intel,但我无法摆脱这一个错误消息:hello.s:53: error: Mach-O 64-bit format does not support 32-bit absolute addresses.这是我用来汇编和链接的命令:nasm -f macho64 hello.s && ld -macosx_version_min 10.6 hello.o.这是相关的:

cmp rsi, name+8
Run Code Online (Sandbox Code Playgroud)

rsi是我在循环中用于索引的寄存器,name是为用户输入保留的四字,这是名称,到目前为止已经写入了.

这是代码的一部分(要查看其余部分,单击链接并转到底部,唯一的区别是我使用64位寄存器):

loopAgain:
mov al, [rsi]           ; al is a 1 byte register
cmp al, 0x0a            ; if al holds an ascii newline...
je exitLoop             ; then jump to label exitLoop

; If al does not hold an ascii newline...
mov rax, 0x2000004      ; System call write = 4 …
Run Code Online (Sandbox Code Playgroud)

macos assembly x86-64 mach-o nasm

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

Haskell:逐行读取文件

我最近做了滑铁卢CCC,我觉得Haskell是回答这些类型问题的完美语言.我还在学习它.不过,我在输入方面有点挣扎.

这是我正在使用的:

import IO
import System.Environment
import System.FilePath

…

main = do
    name <- getProgName
    args <- getArgs
    input <- readFile $
        if not (null args)
            then head args
            else dropExtension name ++ ".in"
    let (k:code:_) = lines input
    putStrLn $ decode (read k) code
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在从命令行给定的文件路径中读取,或者从j1.in例如,如果调用此程序j1.hs并将其编译为j1.

我只对文件的前两行有兴趣,所以我已经使用模式匹配来获取这些线路,并将其绑定到kcode在这个例子.然后我读k作一个整数并将它和代码字符串传递给我decode输出的函数.

我想知道是否readFile将整个文件加载到内存中,这将是不好的.但后来我开始思考,也许是因为Haskell是懒惰的,它只会读取前两行,因为这就是后来要求的全部内容.我对吗?

此外,如果有任何代码示例可能更好或更具惯用性,请告诉我.

file-io haskell functional-programming input

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

Haskell:读取一个数字(整数或浮点数)

我正在使用这个实现maybeRead:

maybeRead :: (Read a) => String -> Maybe a
maybeRead = fmap fst . listToMaybe . filter (null . dropWhile isSpace . snd) . reads
Run Code Online (Sandbox Code Playgroud)

和我自己的getNum功能,它提示直到它获得有效输入:

getNum :: (Num a, Read a) => String -> IO a
getNum s = do
    putStr s
    input <- fmap maybeRead getLine
    if isNothing input
        then getNum s
        else return $ fromJust input
Run Code Online (Sandbox Code Playgroud)

但是,如果我输入5.2它将其视为糟糕的输入 - 为什么?还有就是零个OCCURENCES IntInteger在我的代码.我只是用Num,因为我想接受任何类型的号码.

如果我明确地称之为getNum "Enter a number: …

io parsing haskell input typing

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

C函数参数中的数组语法与指针语法

我理解数组如何衰减到指针.我明白,对于编译器,这个:

void foo(int *arg1);
Run Code Online (Sandbox Code Playgroud)

是100%相当于:

void foo(int arg1[]);
Run Code Online (Sandbox Code Playgroud)

一种风格应该优先于另一种吗?我希望保持一致,但我很难为两种决定辩护.

虽然int main(int argc, char *argv[])并且int main(int argc, char **argv)是相同的,但前者似乎更常见(如果我错了,请纠正我).

c c++ arrays parameters pointers

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

Go中"alias"类型的开头

我正在写作vector.go我课程的一部分.它提供了三维vector结构和一些向量运算.

对于一般vector类型的对称性,我想提供一个scalar类型:

type scalar float64
Run Code Online (Sandbox Code Playgroud)

我喜欢这个,因为我没有理由每次都要指定我的标量的精度.它们是64位的事实是一个细节,我宁愿只指定一次.

唯一的问题是我知道这不像typedefC中那样.幕后似乎还有更多的事情发生.我的问题:这会产生任何开销吗?如果是的话,何时以及多少?当性能绝对至关重要时,我可以使用它吗?(假设我将取代的每次出现float64scalar和转换文字,例如,scalar(1.0).)

types overhead go type-alias

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