小编spe*_*der的帖子

块/方法可以互换吗?

我来自C#/ Java/JS到objectiveC,我只有几天了,所以对我很轻松.

...所以我有一个方法,将一个块作为参数:

-(void)subToPub: (NSString*)publisherName 
      channelId: (NSString*)channelId 
       callback: (void(^)(NSDictionary*))cb
Run Code Online (Sandbox Code Playgroud)

我通常会使用如下:

[myObj  subToPub:@"someId" 
       channelId:@"someOtherId" 
        callback:[(^(NSDictionary* msg){
                    NSLog(@"cb2: %@",msg);
                 }) copy]
];
Run Code Online (Sandbox Code Playgroud)

现在,假设我有另一种兼容签名的方法,例如:

-(void)subscribeHandler:(NSDictionary*)msg{
    NSLog(@"cb2: %@",msg);
}
Run Code Online (Sandbox Code Playgroud)

是否可以将此作为回调传递给上面的subToPub方法,或者我是否需要在块中包装此方法调用?

objective-c ios objective-c-blocks

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

挂钩结束ARC dealloc

鉴于以下简单实现:

@implementation RTUDeallocLogger
-(void)dealloc
{
    NSLog(@"deallocated");
}
@end
Run Code Online (Sandbox Code Playgroud)

我们在ARC下运行以下代码:

@implementation RTURunner
{
    NSArray* arr;
}
-(void)run{
    arr = [NSArray
           arrayWithObjects:[[RTUDeallocLogger alloc]init],
                            [[RTUDeallocLogger alloc]init],
                            [[RTUDeallocLogger alloc]init],
                            nil];
    NSLog(@"nulling arr");
    arr = NULL;
    NSLog(@"finished nulling");
}
@end
Run Code Online (Sandbox Code Playgroud)

我们得到以下日志输出:

nulling arr
finished nulling
deallocated
deallocated
deallocated

所有解除分配完成后我想执行一个动作.这可能吗?

这个问题的目的是为了更多地了解ARC的机制,特别是ARC在什么时候触发这些解除分配,以及当我删除引用时这是否会同步发生.

objective-c dealloc ios automatic-ref-counting

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

Bootstrap Modal无法在ios上运行?

来自bootstrap的模式似乎在iPhone中不起作用,但在Android中起作用.

有这样的数据吗?有人可以检查是否在其他任何设备上发生了这种情况?

点击这里:http: //citmalumnes.upc.es/~marcelba/3r/Nuevo%20directorio/p%C3%A0gina%20principal.html

modal-dialog twitter-bootstrap

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

清除浏览器缓存后保存的swf文件在哪里?

如果我在一个闪存密集的网站上,并清除我的浏览器缓存,该网站将继续运行.

有可能在我清除浏览器缓存时,整个swf没有加载到flash的活动内存中(特别是对于使用大型rsl库的网站,例如papervision3d).我可以使用flash-builder的分析工具来验证这一点.

那么,swf库在哪里保存在磁盘上(或者在其他地方的内存中?),这使得网站能够继续运行?

apache-flex flash actionscript-3

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

保存应用程序首选项...注册表/文件

存储应用程序首选项的最佳位置在哪里?

特别是,我想保存媒体播放器的首选项,如音量等.两位候选人脑海中浮现......文件和注册表.哪个更合适?

作为后续内容,我还想知道是否有任何API有助于创建特定于应用程序的设置.

除非有人告诉我这是错的,否则我想保存HKCU... or HKLM/Software/MyCompanyName/MyAppName/Key到注册表中的内容,或者%APPDATA\MyCompanyName\MyAppName\someTypeOfSettingsFile.

由于这些似乎常用于此类设置,我假设.Net可以轻松地在这些位置存储设置.是否有一个简单的高级API,.Net可以让我读取和写入这些常见位置的设置?

.net c# registry settings

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

在Linq vs foreach循环中调用HashSet.Add(item)

在以下代码段中需要帮助:

static void Main(string[] args)
{
    var customers = new HashSet<Customer>();
    var action = new Action(() =>
    {
        var innerCustomers = new Customer[] 
        { 
            new Customer { CustomerID = 1, CustomerName = "C 1" }, 
            new Customer { CustomerID = 2, CustomerName = "C 2" }, 
        };

        innerCustomers.Select(c => customers.Add(c)); //doesn't work

        foreach (var customer in innerCustomers) 
            customers.Add(customer); //works fine
    });

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

innerCustomers.Select(c => customers.Add(c));似乎没有在"客户"集合中插入记录的工作,但是,在该行下方的"foreach"工作正常.任何人都知道为什么它不能在linq中工作?我知道我没有从select方法中选择任何东西

c# linq

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

如何实现扩展方法像List的Reverse一样不用返回?

到目前为止,我有以下的Shuffle代码,

    public static IList<T> Shuffle<T>(this IList<T> list)
    {
        var rnd = new Random();
        return list.OrderBy(element => rnd.Next());
    }
Run Code Online (Sandbox Code Playgroud)

我喜欢它,

    list = list.Shuffle();
Run Code Online (Sandbox Code Playgroud)

我想能够像它一样使用它

    list.Shuffle(); // like list.Reverse();
Run Code Online (Sandbox Code Playgroud)

所以基本上我想通过引用洗牌

我尝试了以下代码,

    public static void Shuffle<T>(this ref IList<T> list)
    {
        var rnd = new Random();
        list.OrderBy(element => rnd.Next());
    }
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

任何帮助是极大的赞赏!

c# extension-methods reverse shuffle list

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

'查询结果不能多​​次枚举'

我有一个SQL Server程序我正在访问Linq到Sql.当我执行查询时,我收到错误"查询结果不能多​​次枚举".该参数在txtName文本框中输入,结果显示在lstName列表视图中.

 public void GetSearchString()
 {
     Data.Database.FRCDatabaseDatacontext context = 
         new Data.Database.FRCDatabaseDatacontext();
     var result = context.GetSearchProcedure(txtName.Text);
     foreach (GetSearchProcedureResult search in result)
         if ( search.UserGuid == 
               Workspace.Instance.ActiveUser.CurrentUserActiveDirectoryGuid)
         {
             lstName.ItemsSource = result.ToList();
         }
 }
Run Code Online (Sandbox Code Playgroud)

此方法将返回每个结果,但我想返回guids匹配的结果.

谢谢!

Data.Database.FRCDatabaseDatacontext context = 
    new Data.Database.FRCDatabaseDatacontext();
var result = context.GetSearchProcedure(txtName.Text);
lstName.ItemsSource = result.ToList();
Run Code Online (Sandbox Code Playgroud)

c# linq wpf

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

C++ 跨平台开发(Windows 和 Mac OS)

我有一项新任务来研究开发 C++ 跨平台 (Mac/Win) 实用程序的方式以满足我们的内部需求。

我已经使用 C#、Java、Managed C++ 等不同的“粉红色”语言开发了 7 年。但是在这个任务中,要求是支持 Mac 和在 Mac 上运行的 .NET ,真的很痛苦(从其他使用过这个的人那里知道这一点)。

所以我开始考虑 C++ 是否可以使用 C++ 进行跨平台开发。该应用程序将不包含任何 GUI,但将包含大量系统 API 调用和大量业务逻辑分析。

是否有一些库允许实现这种任务?有可能做吗?

c++ windows macos cross-platform cross-compiling

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

set抛出StackOverflowException C#

我试图获取并将此对象的列表发送到文本文件.文本文件采用以下格式.

name,IDnumber,department,value

有很多行,所以我用它来读取它们.这是读取和写入文件的代码.

    public List<Employee> ReadFile(string fileName) {
        StreamReader fileIn = new StreamReader(fileName);
        fileIn = File.OpenText(fileName);
        List<Employee> list = new List<Employee>();
        string[] test;
        string name;
        string ID;
        string dep;
        string post;

        while (!fileIn.EndOfStream || !File.Exists(fileName)) {

            string inString = fileIn.ReadLine();
            test = inString.Split('#');
            name = test[0];
            ID = test[1];
            dep = test[2];
            post = test[3];
            Employee newEmp = new Employee(name, ID, dep, post);
            list.Add(newEmp);

        }
        fileIn.Close();
        return list;
    }
Run Code Online (Sandbox Code Playgroud)
    public void WriteFile(List<Employee> outList, string file) {

        StreamWriter writeOut = new …
Run Code Online (Sandbox Code Playgroud)

c#

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