小编Pet*_*isu的帖子

代码中的文字是char还是const char?

可能重复:
字符串文字与C中的const char*

为什么我能做到这一点?

void foo(char * cstr) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

并在代码中

foo("some text");
Run Code Online (Sandbox Code Playgroud)

不应该"某些文本"是const char*类型?

如果它的char*,意味着我可以修改它?

c++

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

NSOperation userInfo字典

有没有办法如何userInfo NSDictionary获得一个NSOperation

基本上我想为NSOperation分配一个ID,以后我想检查一下,如果这个ID已经分配给了NSOperation

- (void)processSmthForID:(NSString *)someID {

    for (NSOperation * operation in self.precessQueue.operations) {

        if ([operation.userInfo[@"id"] isEqualToString:someID]) {
            // already doing this for this ID, no need to create another operation
            return;
        }

    }

    NSOperation * newOperation = ...
    newOperation.userInfo[@"id"] = someID;

    // enqueue and execute

}
Run Code Online (Sandbox Code Playgroud)

multithreading nsoperation nsoperationqueue ios

2
推荐指数
1
解决办法
777
查看次数

通过返回指向简单类型的指针来进行C++内存管理

我想询问以下情况

int * foo() {
    int fooint = 5;
    return &fooint;
}

int myint = *foo();
Run Code Online (Sandbox Code Playgroud)

它基于 http://www.functionx.com/cpp/examples/returnpointer.htm

但我想问,如果它是安全的,因为我认为会发生

  • fooint在foo()的范围内被初始化
  • 返回fooint的地址,foo()结束
  • foo()中的所有变量都被破坏了
  • 所以myint将保存被破坏的地址中的int值

做起来不是更好

int * foo() {
    int * fooint = new int;
    *fooint = 5;
    return fount;
}

int * tmp = foo();
int myint = * tmp;
delete tmp;
Run Code Online (Sandbox Code Playgroud)

c++ memory-management

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

使用std :: string构造函数复制const char*

这段代码好吗?

void SomeClass :: foo(const char * _name) {
     //name is of type const char *
     name = std::string(_name).c_str();
}
Run Code Online (Sandbox Code Playgroud)

它看起来像是在工作,但我不确定它是否正常

我应该做一个旧学校strcpy吗?

c++ string std char

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

C++ MAC OS X无法写入〜/ Library/Application Support/<appname>

如果我在.app捆绑包中保存文件,它会保存正常,但Apple建议将文件保存在Application Support下

~/Library/Application Support/appname
Run Code Online (Sandbox Code Playgroud)

要么

~/Library/Application Support/bundleid
Run Code Online (Sandbox Code Playgroud)

我试过两个,但我总是得到一个例外.我正在获得应用程序支持的路径,即

/Users/myname/Library/Application Support/com.company.appname/
Run Code Online (Sandbox Code Playgroud)

要么

/Users/myname/Library/Application Support/AppName/
Run Code Online (Sandbox Code Playgroud)

com.company.appname在我的内部正确指定info.plist,AppNameproduct AppName.app,所以路径似乎是正确的.

{
    FilepathProcessor::pathForFile(fpath, "menustate", ".sav", 
                                   PATH_TO_DESTINATION_SAVE_LOAD_FOLDER);

    std::ofstream file;
    file.exceptions(std::ofstream::eofbit | std::ofstream::failbit | 
                    std::ofstream::badbit);
    INFO_ARG("prepare to save to '%s'", fpath.c_str());

    try {
        file.open(fpath.c_str(), std::ios::out | std::ios::binary | 
                  std::ios::trunc);
        ERROR_IF_ARG(!file.is_open(), "couldnt open file for saving at '%s'",
                     fpath.c_str(), return);

        //will pass this point

        //exception happens by first write
        WRITE_INT_TO_BINFILE(file, episode);

        //...

    } 
    catch (std::ofstream::failure e) {
        ERROR_IF_ARG(true, "exception %s", …
Run Code Online (Sandbox Code Playgroud)

c++ macos file std

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

可可在一周内获得第一天

如何获得一周的第一天约会

这似乎更容易,因为:

  • 当周从星期日开始,我需要回到星期日
  • 如果从星期一开始,我需要获得星期一的约会

输入日期是一周中的任何日期与时间...我尝试了几种方法,但边缘情况使它难以实现

我做了一个函数,然而它不能100%工作(不确定[components setDay:-weekday + 2];)

- (NSDate *)firstDateOfWeek {

    NSCalendar * calendar = [NSCalendar currentCalendar];

    NSDateComponents *weekdayComponents = [calendar components:(NSDayCalendarUnit | NSWeekdayCalendarUnit) fromDate:self];
    // because sunday is 0, we need it to be 6
    NSInteger weekday = (([weekdayComponents weekday] + 6) % 7);

    NSDateComponents *components = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit) fromDate:self];
    [components setDay: -weekday + 2];

    return [calendar dateFromComponents:components];

}
Run Code Online (Sandbox Code Playgroud)

nsdate nscalendar ios

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

如何在重载方法中强制调用super

如何[super methodName...]在重写方法中强制执行调用?

除了在评论中陈述它,还有另一种方式,也许是一招?

macos cocoa cocoa-touch objective-c ios

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

找出从剪贴板读取的内容

自 iOS14 以来,我们的应用程序显示了读取剪贴板通知,但是我们没有读取任何内容,这一定是某些 SDK(可能是 Facebook)的结果

但是如何在访问剪贴板时确认或断点,以找出从剪贴板读取的内容?

debugging xcode swift

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

在静态函数中使用静态变量的问题

我有一个完整的静态类,使用std :: map

这就是简化的案例

.H

#ifndef KEYBOARD_H
#define KEYBOARD_H

#include <map>

class Keyboad {

    static std::map<char, bool> pressed;    

    static void keyPressedEvent(char _key); 

};

#endif
Run Code Online (Sandbox Code Playgroud)

的.cpp

#include "Keyboard.h"

void Keyboard :: keyPressedEvent(char _key) {

    Keyboard :: pressed[_key] = true;

}
Run Code Online (Sandbox Code Playgroud)

但是静态成员变量存在问题,因为我得到了

Undefined symbols:
"Keyboard::pressed", referenced from:
__ZN15Keyboard7pressedE$non_lazy_ptr in Keyboard.o
(maybe you meant: __ZN15Keyboard7pressedE$non_lazy_ptr)
ld: symbol(s) not found
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

当我删除它,它运行正常

为什么我会遇到这个问题,使用静态变量时应该没有问题:/

谢谢

c++

0
推荐指数
2
解决办法
165
查看次数